1.實驗任務?
(1).開機時,顯示12:00:00的時間開始計時;
(2).P0.0/AD0控制“秒”的調整,每按一次加1秒;?
(3).P0.1/AD1控制“分”的調整,每按一次加1分;?
(4).P0.2/AD2控制“時”的調整,每按一次加1個小時;?
2.電路原理圖
(1).開機時,顯示12:00:00的時間開始計時;
(2).P0.0/AD0控制“秒”的調整,每按一次加1秒;?
(3).P0.1/AD1控制“分”的調整,每按一次加1分;?
(4).P0.2/AD2控制“時”的調整,每按一次加1個小時;?
2.電路原理圖
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
(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
評論
查看更多