久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13351|回復: 26
打印 上一主題 下一主題
收起左側

[分享]給51單片機初學者的40個經典實驗4

[復制鏈接]
跳轉到指定樓層
樓主
ID:16470 發表于 2009-8-22 16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
覺得這份資料對初學者很有用,希望對初學的人有所幫助。
  

20. 數字鐘﹝★﹞

1. 實驗任務

(1. 開機時,顯示12:00:00的時間開始計時;

(2. P0.0/AD0控制“秒”的調整,每按一次加1秒;

(3. P0.1/AD1控制“分”的調整,每按一次加1分;

(4. P0.2/AD2控制“時”的調整,每按一次加1個小時;

2. 電路原理圖

圖4.20.1

3. 系統板上硬件連線

(1. 把“單片機系統”區域中的P1.0-P1.7端口用8芯排線連接到“動態數碼顯示”區域中的A-H端口上;

(2. 把“單片機系統:區域中的P3.0-P3.7端口用8芯排線連接到“動態數碼顯示”區域中的S1-S8端口上;

(3. 把“單片機系統”區域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區域中的SP3、SP2、SP1端口上;

4. 相關基本知識

(1. 動態數碼顯示的方法

(2. 獨立式按鍵識別過程

(3. “時”,“分”,“秒”數據送出顯示處理方法

5. 程序框圖

6. 匯編源程序
SECOND EQU 30H
MINITE EQU 31H
HOUR EQU 32H
HOURK BIT P0.0
MINITEK BIT P0.1
SECONDK BIT P0.2
DISPBUF EQU 40H
DISPBIT EQU 48H
T2SCNTA EQU 49H
T2SCNTB EQU 4AH
TEMP EQU 4BH

ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV SECOND,#00H
MOV MINITE,#00H
MOV HOUR,#12
MOV DISPBIT,#00H
MOV T2SCNTA,#00H
MOV T2SCNTB,#00H
MOV TEMP,#0FEH
LCALL DISP
MOV TMOD,#01H
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
SETB TR0
SETB ET0
SETB EA
WT: JB SECONDK,NK1
LCALL DELY10MS
JB SECONDK,NK1
INC SECOND
MOV A,SECOND
CJNE A,#60,NS60
MOV SECOND,#00H
NS60: LCALL DISP
JNB SECONDK,$
NK1: JB MINITEK,NK2
LCALL DELY10MS
JB MINITEK,NK2
INC MINITE
MOV A,MINITE
CJNE A,#60,NM60
MOV MINITE,#00H
NM60: LCALL DISP
JNB MINITEK,$
NK2: JB HOURK,NK3
LCALL DELY10MS
JB HOURK,NK3
INC HOUR
MOV A,HOUR
CJNE A,#24,NH24
MOV HOUR,#00H
NH24: LCALL DISP
JNB HOURK,$
NK3: LJMP WT
DELY10MS:
MOV R6,#10
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
DISP:
MOV A,#DISPBUF
ADD A,#8
DEC A
MOV R1,A
MOV A,HOUR
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV@R1,A
DEC R1
MOV A,MINITE
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV@R1,A
DEC R1
MOV A,SECOND
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
RET
INT_T0:
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
MOV A,#DISPBUF
ADD A,DISPBIT
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
MOV A,DISPBIT
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P3,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,KNA
MOV DISPBIT,#00H
KNA: INC T2SCNTA
MOV A,T2SCNTA
CJNE A,#100,DONE
MOV T2SCNTA,#00H
INC T2SCNTB
MOV A,T2SCNTB
CJNE A,#05H,DONE
MOV T2SCNTB,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEXT
MOV SECOND,#00H
INC MINITE
MOV A,MINITE
CJNE A,#60,NEXT
MOV MINITE,#00H
INC HOUR
MOV A,HOUR
CJNE A,#24,NEXT
MOV HOUR,#00H
NEXT: LCALL DISP
DONE: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END

7. C語言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};
unsigned char dispbitcnt;

unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt;

unsigned char i,j;

void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;

while(1)
{
if(P0_0==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
second++;
if(second==60)
{
second=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
}
}
if(P0_1==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)
{
minite++;
if(minite==60)
{
minite=0;
}
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
while(P0_1==0);
}
}
if(P0_2==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P0_2==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P1=dispcode[dispbuf[dispbitcnt]];
P3=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
}
}

 21. 拉幕式數碼顯示技術

1. 實驗任務

用AT89S51單片機的P0.0/AD0-P0.7/AD7端口接數碼管的a-h端,8位數碼管的S1-S8通過74LS138譯碼器的Y0-Y7來控制選通每個數碼管的位選端。AT89S51單片機的P1.0-P1.2控制74LS138的A,B,C端子。在8位數碼管上從右向左循環顯示“12345678”。能夠比較平滑地看到拉幕的效果。

2. 電路原理圖

圖4.21.1

3. 系統板上硬件連線

(1. 把“單片機系統”區域中的P0.0/AD0-P0.7/AD7用8芯排線連接到“動態數碼顯示”區域中的a-h端口上;

(2. 把“三八譯碼模塊”區域中的Y0-Y7用8芯排線連接到“動態數碼顯示”區域中的S1-S8端口上;

(3. 把“單片機系統”區域中的P1.0-P1.2端口用3根導線連接到“三八譯碼模塊”區域中的A、B、C“端口上;

4. 程序設計方法

(1. 動態數碼顯示技術;如何進行動態掃描,由于一次只能讓一個數碼管顯示,因此,要顯示8位的數據,必須經過讓數碼管一個一個輪流顯示才可以,同時每個數碼管顯示的時間大約在1ms到4ms之間,所以為了保證正確顯示,我必須每隔1ms,就得刷新一個數碼管。而這刷新時間我們采用單片機的定時/計數器T0來控制,每定時1ms對數碼管刷新一次,T0采用方式2。

(2. 在進行數碼顯示的時候,要對顯示單元開辟8個顯示緩沖區,每個顯示緩沖區裝有顯示的不同數據即可。

5. 程序框圖

主程序框圖

中斷服務程序框圖

 

圖4.21.2

6. 匯編源程序
DISPBUF EQU 30H
DISPCNT EQU 38H
DISPBIT EQU 39H
T1CNTA EQU 3AH
T1CNTB EQU 3BH
CNT EQU 3CH

ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV DISPCNT,#8
MOV A,#10
MOV R1,#DISPBUF
LP: MOV @R1,A
INC R1
DJNZ DISPCNT,LP
MOV DISPBIT,#00H
MOV T1CNTA,#00H
MOV T1CNTB,#00H
MOV CNT,#00H
MOV TMOD,#01H
MOV TH0,#(65536-1000) / 256
MOV TL0,#(65536-1000) MOD 256
SETB TR0
SETB ET0
SETB EA
SJMP $

INT_T0:
MOV TH0,#(65536-1000) / 256
MOV TL0,#(65536-1000) MOD 256
MOV A,DISPBIT
ADD A,#DISPBUF
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,P1
ANL A,#0F8H
ADD A,DISPBIT
MOV P1,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,NEXT
MOV DISPBIT,#00H
NEXT: INC T1CNTA
MOV A,T1CNTA
CJNE A,#50,LL1
MOV T1CNTA,#00H
INC T1CNTB
MOV A,T1CNTB
CJNE A,#8,LL1
MOV T1CNTB,#00H
INC CNT
MOV A,CNT
CJNE A,#9,LLX
MOV CNT,#00H
MOV A,CNT
LLX: CJNE A,#01H,NEX1
MOV 30H,#8
LL1: LJMP DONE
NEX1: CJNE A,#02H,NEX2
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX2: CJNE A,#03H,NEX3
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX3: CJNE A,#04H,NEX4
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX4: CJNE A,#05H,NEX5
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX5: CJNE A,#06H,NEX6
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX6: CJNE A,#07H,NEX7
MOV 36H,#8
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX7: CJNE A,#08H,NEX8
MOV 37H,#8
MOV 36H,#8
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX8: CJNE A,#00H,DONE
MOV 37H,#10
MOV 36H,#10
MOV 35H,#10
MOV 34H,#10
MOV 33H,#10
MOV 32H,#10
MOV 31H,#10
MOV 30H,#10
LL: LJMP DONE
DONE: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
7. C語言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xf8,0xf9,0xfa,0xfb,
0xfc,0xfd,0xfe,0xff};
unsigned char dispbuf[8]={16,16,16,16,16,16,16,16};
unsigned char dispbitcnt;
unsigned int t02scnt;
unsigned char t5mscnt;
unsigned char u;
unsigned char i;

void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1);
}

void t0(void) interrupt 1 using 0
{
t5mscnt++;
if(t5mscnt==4)
{
t5mscnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P1=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
t02scnt++;
if(t02scnt==1600)
{
t02scnt=0;
u++;
if(u==9)
{
u=0;
}
for(i=0;i<8;i++)
{
dispbuf=16;
}
for(i=0;i<u;i++)
{
dispbuf=8;
}
}
}

22. 電子琴

1. 實驗任務

(1. 由4X4組成16個按鈕矩陣,設計成16個音。

(2. 可隨意彈奏想要表達的音樂。

2. 電路原理圖

圖4.22.1

3. 系統板硬件連線

(1. 把“單片機系統”區域中的P1.0端口用導線連接到“音頻放大模塊”區域中的SPK IN端口上;

(2. 把“單片機系統“區域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區域中的C1-C4 R1-R4端口上;

4. 相關程序內容

(1. 4X4行列式鍵盤識別;

(2. 音樂產生的方法;

一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可。現在以單片機12MHZ晶振為例,例出高中低音符與單片機計數T0相關的計數值如下表所示

音符

頻率(HZ)

簡譜碼(T值)


音符

頻率(HZ)

簡譜碼(T值)

低1 DO

262

63628

# 4 FA#

740

64860

#1 DO#

277

63731

中 5 SO

784

64898

低2 RE

294

63835

# 5 SO#

831

64934

#2 RE#

311

63928

中 6 LA

880

64968

低 3 M

330

64021

# 6

932

64994

低 4 FA

349

64103

中 7 SI

988

65030

# 4 FA#

370

64185

高 1 DO

1046

65058

低 5 SO

392

64260

# 1 DO#

1109

65085

# 5 SO#

415

64331

高 2 RE

1175

65110

低 6 LA

440

64400


# 2 RE#

1245

65134

# 6

466

64463

高 3 M

1318

65157

低 7 SI

494

64524

高 4 FA

1397

65178

中 1 DO

523

64580

# 4 FA#

1480

65198

# 1 DO#

554

64633

高 5 SO

1568

65217

中 2 RE

587

64684

# 5 SO#

1661

65235

# 2 RE#

622

64732

高 6 LA

1760

65252

中 3 M

659

64777

# 6

1865

65268

中 4 FA

698

64820

高 7 SI

1967

65283

下面我們要為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應的數據

低音0-19之間,中音在20-39之間,高音在40-59之間

TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0

DW 0,63731,63928,0,64185,64331,64463,0,0,0

DW 0,64580,64684,64777,64820,64898,64968,65030,0,0

DW 0,64633,64732,0,64860,64934,64994,0,0,0

DW 0,65058,65110,65157,65178,65217,65252,65283,0,0

DW 0,65085,65134,0,65198,65235,65268,0,0,0

DW 0

2、音樂的音拍,一個節拍為單位(C調)

曲調值

DELAY


曲調值

DELAY

調4/4

125ms


調4/4

62ms

調3/4

187ms


調3/4

94ms

調2/4

250ms


調2/4

125ms

對于不同的曲調我們也可以用單片機的另外一個定時/計數器來完成。

下面就用AT89S51單片機產生一首“生日快樂”歌曲來說明單片機如何產生的。

在這個程序中用到了兩個定時/計數器來完成的。其中T0用來產生音符頻率,T1用來產生音拍。

5. 程序框圖

圖4.22.2

6. 匯編源程序
KEYBUF EQU 30H
STH0 EQU 31H
STL0 EQU 32H
TEMP EQU 33H
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV TMOD,#01H
SETB ET0
SETB EA
WAIT:
MOV P3,#0FFH
CLR P3.4
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK1
MOV KEYBUF,#0
LJMP DK1
NK1: CJNE A,#0DH,NK2
MOV KEYBUF,#1
LJMP DK1
NK2: CJNE A,#0BH,NK3
MOV KEYBUF,#2
LJMP DK1
NK3: CJNE A,#07H,NK4
MOV KEYBUF,#3
LJMP DK1
NK4: NOP
DK1:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0

DK1A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK1A
CLR TR0
NOKEY1:
MOV P3,#0FFH
CLR P3.5
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK5
MOV KEYBUF,#4
LJMP DK2
NK5: CJNE A,#0DH,NK6
MOV KEYBUF,#5
LJMP DK2
NK6: CJNE A,#0BH,NK7
MOV KEYBUF,#6
LJMP DK2
NK7: CJNE A,#07H,NK8
MOV KEYBUF,#7
LJMP DK2
NK8: NOP
DK2:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0


DK2A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK2A
CLR TR0
NOKEY2:
MOV P3,#0FFH
CLR P3.6
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK9
MOV KEYBUF,#8
LJMP DK3
NK9: CJNE A,#0DH,NK10
MOV KEYBUF,#9
LJMP DK3
NK10: CJNE A,#0BH,NK11
MOV KEYBUF,#10
LJMP DK3
NK11: CJNE A,#07H,NK12
MOV KEYBUF,#11
LJMP DK3
NK12: NOP
DK3:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0

DK3A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK3A
CLR TR0
NOKEY3:
MOV P3,#0FFH
CLR P3.7
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK13
MOV KEYBUF,#12
LJMP DK4
NK13: CJNE A,#0DH,NK14
MOV KEYBUF,#13
LJMP DK4
NK14: CJNE A,#0BH,NK15
MOV KEYBUF,#14
LJMP DK4
NK15: CJNE A,#07H,NK16
MOV KEYBUF,#15
LJMP DK4
NK16: NOP
DK4:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0

DK4A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK4A
CLR TR0
NOKEY4:
LJMP WAIT
DELY10MS:
MOV R6,#10
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
INT_T0:
MOV TH0,STH0
MOV TL0,STL0
CPL P1.0
RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

TABLE1: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178
END
7. C語言源程序
#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};

void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;

while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}

void t0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
 

P1_0=~P1_0;
}


完成了  謝謝大家支持我
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:15096 發表于 2009-8-30 14:19 | 只看該作者
樓主好人啊!!!兩種程序都有 !!!
回復

使用道具 舉報

板凳
ID:16951 發表于 2009-9-9 16:45 | 只看該作者

謝謝樓主

回復

使用道具 舉報

地板
ID:16663 發表于 2009-9-9 16:59 | 只看該作者

謝謝

回復

使用道具 舉報

5#
ID:17303 發表于 2009-9-17 15:43 | 只看該作者

多謝樓主..好大幫助啊.

回復

使用道具 舉報

6#
ID:17537 發表于 2009-9-24 19:43 | 只看該作者
怎么沒有原理圖啊?
回復

使用道具 舉報

7#
ID:19204 發表于 2009-11-17 14:23 | 只看該作者
zhege yao zhichi
回復

使用道具 舉報

8#
ID:19287 發表于 2009-11-20 22:05 | 只看該作者

沒圖

回復

使用道具 舉報

9#
ID:19669 發表于 2009-12-3 13:04 | 只看該作者
頂。。。。。。。。
回復

使用道具 舉報

10#
ID:19976 發表于 2009-12-17 14:45 | 只看該作者

呵呵強悍!

 

回復

使用道具 舉報

11#
ID:19956 發表于 2010-4-16 21:48 | 只看該作者

感謝樓主范文祥啊

 

 

回復

使用道具 舉報

12#
ID:23563 發表于 2010-5-4 15:55 | 只看該作者
頂一個!!!
回復

使用道具 舉報

13#
ID:23564 發表于 2010-5-6 09:12 | 只看該作者

好厲害

回復

使用道具 舉報

14#
ID:10893 發表于 2010-9-7 23:05 | 只看該作者
好人啊!!!!
回復

使用道具 舉報

15#
ID:26540 發表于 2010-10-25 09:14 | 只看該作者
頂起,謝謝樓主
回復

使用道具 舉報

16#
ID:34221 發表于 2012-2-12 21:50 | 只看該作者
;哦iugyfhjkljhhl
回復

使用道具 舉報

17#
ID:35398 發表于 2012-3-3 05:30 | 只看該作者
樓主  怎么沒有圖呀!
回復

使用道具 舉報

18#
ID:36014 發表于 2012-4-3 23:06 | 只看該作者
感謝樓主 如果以打包或文件的形式傳上來更好
回復

使用道具 舉報

19#
ID:37873 發表于 2012-4-5 21:13 | 只看該作者
不錯!!!
回復

使用道具 舉報

20#
ID:36014 發表于 2012-4-7 20:33 | 只看該作者

如果能打包下載最好 不過還是要感謝樓主的貢獻

 

回復

使用道具 舉報

21#
ID:38103 發表于 2012-4-10 13:04 | 只看該作者
感謝樓主 分享這樣的結果
回復

使用道具 舉報

22#
ID:38985 發表于 2012-5-7 22:55 | 只看該作者
感謝樓主的分享,謝謝!
回復

使用道具 舉報

23#
ID:40201 發表于 2012-5-13 23:53 | 只看該作者
這是個好東西呀
回復

使用道具 舉報

24#
ID:40341 發表于 2012-6-28 19:29 | 只看該作者
多謝分享。
回復

使用道具 舉報

25#
ID:59655 發表于 2014-3-13 20:05 | 只看該作者
這是個好東西,匯編還是看不懂
回復

使用道具 舉報

26#
ID:61326 發表于 2014-5-4 13:57 | 只看該作者
謝謝分享
回復

使用道具 舉報

27#
ID:61326 發表于 2014-5-4 13:58 | 只看該作者
給大家一個全的,好好學習下。共同進步吧
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av免费在线观看 | 狠狠干影院 | av天天爽| 久亚州在线播放 | 日韩欧美一二三区 | 国产亚洲第一页 | 中文精品视频 | 国产精品我不卡 | 亚洲国产精久久久久久久 | 精品视频一区二区 | 成年网站在线观看 | 一级毛片大全免费播放 | 天天综合日日夜夜 | 亚洲第一福利网 | 日韩一区二区福利视频 | 成人做爰999 | 亚洲精品久久久久久一区二区 | 欧美日韩在线免费观看 | 国产精品黄视频 | 看黄在线| 精品9999| 日本精品一区二区三区在线观看视频 | 精品国产一区二区三区免费 | 九色国产 | 91精品在线播放 | 成人二区 | 岛国av免费观看 | 日韩图区 | 国产精品免费在线 | 黄网站免费在线看 | 成人做爰9片免费看网站 | 久久中文字幕一区 | 99国产精品一区二区三区 | 日韩午夜网站 | 色网站在线免费观看 | 中文字幕免费视频 | 亚洲国产一区视频 | 超碰一区二区 | 欧美精品一区二区在线观看 | 视频在线亚洲 | 日韩精品在线观看视频 |