实验5:串行口、定时器、外中断综合应(电子钟)ppt课件.ppt
单片机原理及应用实验单片机原理及应用实验南京林业大学电工电子实验中心南京林业大学电工电子实验中心 时维铎时维铎 实验五:实验五:电子钟电子钟题目:题目:用用定时器产生时钟;串口定时器产生时钟;串口定时器产生时钟;串口定时器产生时钟;串口驱动驱动74LS16474LS164,74LS164 74LS164驱动静态共阴数码管显示驱动静态共阴数码管显示;I/OI/OI/OI/O 口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制 喇叭报警。喇叭报警。要求:画出实验电路,编写实验程序要求:画出实验电路,编写实验程序。实验五:实验五:电子钟参考电路电子钟参考电路 实验五:实验五:电子钟电子钟题目:题目:用用DSDS1320132013201320产生时钟;串口产生时钟;串口产生时钟;串口产生时钟;串口驱动驱动74LS16474LS164,74LS164 74LS164驱动静态共阴数码管显示驱动静态共阴数码管显示;I/OI/OI/OI/O 口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制口管理键盘设置调整时间;定时器控制 喇叭报警。喇叭报警。要求:画出实验电路,编写实验程序要求:画出实验电路,编写实验程序。实验五:实验五:电子钟参考程序电子钟参考程序主程序主程序主程序主程序 ORG 0000HORG 0000H LJMP MAIN LJMP MAINORG 000BHORG 000BHLJMP DSQ0 LJMP DSQ0 ;50ms50ms定时器定时器MAIN:MOV SP,#50HMAIN:MOV SP,#50HMOV TMOD,#01H ;MOV TMOD,#01H ;设置设置T0T0为工作方式为工作方式1 1 MOV TH0,#3CH ;MOV TH0,#3CH ;设置设置50ms50ms初值初值 MOV TL0,#0B0HMOV TL0,#0B0H MOV 30H,#0 ;50ms MOV 30H,#0 ;50ms计数器清零计数器清零MOV 31H,#0 ;MOV 31H,#0 ;秒计数器清零秒计数器清零 MOV 32H,#0 ;MOV 32H,#0 ;分计数器清零分计数器清零 MOV 33H,#0 ;MOV 33H,#0 ;时计数器清零时计数器清零 MOV 20H,#0 ;MOV 20H,#0 ;标志位标志位清零清零 实验五:实验五:电子钟参考程序电子钟参考程序主程序主程序主程序主程序 SETB EA SETB EA SETB ET0 ;SETB ET0 ;开开T0T0中断中断 SETB TR0SETB TR0 LOP1:JNB 00H,LOP2 ;LOP1:JNB 00H,LOP2 ;在运行状态转在运行状态转 CLR TR0 ;CLR TR0 ;在设置状态设置时间在设置状态设置时间LCALL KEYLCALL KEY NOP NOP LJMP LOP3 LJMP LOP3LOP2:SETB TR0LOP2:SETB TR0LOP3:SETB P2.0 ;LOP3:SETB P2.0 ;判运行判运行/设置键设置键 JB P2.0,LOP5 JB P2.0,LOP5 CPL 00H ;CPL 00H ;运行运行/设置状态互换设置状态互换LOP4:SETB P2.0 ;LOP4:SETB P2.0 ;等待键抬起。等待键抬起。JNB P2.0,LOP4 JNB P2.0,LOP4 实验五:实验五:电子钟参考程序电子钟参考程序主程序主程序主程序主程序LOP5:NOPLOP5:NOP LCALL ESZH ;LCALL ESZH ;二十转换二十转换NOPNOPLCALL DISP ;LCALL DISP ;显示显示 NOP NOPLCALL DELAY ;LCALL DELAY ;延时延时 NOP NOP LJMP LOP1 LJMP LOP1 实验五:实验五:电子钟参考程序电子钟参考程序DSQ1:PUSH ACCDSQ1:PUSH ACC MOV TH0,#3CH ;MOV TH0,#3CH ;重装重装50ms50ms初值初值 MOV TL0,#0B0HMOV TL0,#0B0H INC 30H ;50ms INC 30H ;50ms计数器计数器+1+1 MOV A,30HMOV A,30H CJNZ A,#20,DSQ9;CJNZ A,#20,DSQ9;到到1 1秒吗?秒吗?MOV 30H,#0 MOV 30H,#0 INC 31H ;INC 31H ;秒计数器秒计数器+1+1 MOV A,31H MOV A,31H CJNZ A,#60,DSQ9 ;CJNZ A,#60,DSQ9 ;到到1 1分吗?分吗?MOV 31H,#0 MOV 31H,#0 实验五:实验五:电子钟参考程序电子钟参考程序 INC 32H ;INC 32H ;分计数器分计数器+1+1 MOV A,32H MOV A,32H CJNZ A,#60,DSQ9 ;CJNZ A,#60,DSQ9 ;到到6060分吗?分吗?MOV 32H,#0 MOV 32H,#0 INC 33H ;INC 33H ;时计数器时计数器+1+1 MOV A,33H MOV A,33H CJNZ A,#24,DSQ9 ;CJNZ A,#24,DSQ9 ;到到1 1天吗?天吗?MOV 33H,#0 MOV 33H,#0DSQ9:POP ACCDSQ9:POP ACC RETIRETI 实验五:实验五:电子钟参考程序电子钟参考程序 ;=二二进制转换十进制子程序进制转换十进制子程序 =ESZHESZH:MOV A,31H MOV A,31H ;取秒二进制数;取秒二进制数 MOV MOV B,B,#10#10 DIV AB DIV AB MOV 40H,BMOV 40H,B ;余数为秒个位数;余数为秒个位数 MOV 41H,AMOV 41H,A ;商为秒十位数;商为秒十位数 MOV A,32H MOV A,32H ;取分二进制数;取分二进制数 MOV MOV B,B,#10#10 DIV AB DIV AB MOV 42H,BMOV 42H,B ;余数为分个位数;余数为分个位数 MOV 43H,AMOV 43H,A ;商为分十位数;商为分十位数 MOV A,33H MOV A,33H ;取时二进制数;取时二进制数 MOV MOV B,B,#10#10 DIV AB DIV AB MOV 44H,BMOV 44H,B ;余数为时个位数;余数为时个位数 MOV 45H,AMOV 45H,A ;商为时十位数;商为时十位数 RETRET 实验五:实验五:电子钟参考程序电子钟参考程序 ;=显示子程序显示子程序 =DISP:MOV DPTR,#TAB ;DISP:MOV DPTR,#TAB ;取字形表地址取字形表地址 MOV R0,#45HMOV R0,#45H MOV R7,#6 MOV R7,#6DIS1:MOV A,R0 ;DIS1:MOV A,R0 ;取显示数据取显示数据 MOVC A,A+DPTR ;MOVC A,A+DPTR ;取显示数据的字形取显示数据的字形 MOV SBUF,A ;MOV SBUF,A ;串行输出串行输出 JNB TI,$;JNB TI,$;状态查询状态查询 CLR TI ;CLR TI ;清发送中断标志清发送中断标志 实验五:实验五:电子钟参考程序电子钟参考程序 DEC R0 DEC R0 DJNZ R7,DIS1 DJNZ R7,DIS1 RET RET TAB:DB 0FCH,60H,0DAH ;0-2(TAB:DB 0FCH,60H,0DAH ;0-2(共阴共阴)DB 0F2H,66H,0B6H ;3-5(a b c d e f g dp)DB 0F2H,66H,0B6H ;3-5(a b c d e f g dp)DB 0BEH,0E0H,0FEH ;6-8 DB 0BEH,0E0H,0FEH ;6-8 DB 0F6H ;9-DB 0F6H ;9-实验五:实验五:电子钟参考程序电子钟参考程序 ;=键盘子程序键盘子程序 =KEY:NOPKEY:NOP SETB P2.1 ;SETB P2.1 ;按调整时键按调整时键 JB P2.1,KEY1 JB P2.1,KEY1 INC 33H ;INC 33H ;时计数器时计数器+1+1 MOV A,33H MOV A,33H CJNE A,#24,KEY9 CJNE A,#24,KEY9 MOV 33H,#0 MOV 33H,#0 LJMP KEY9 LJMP KEY9KEY1:SETB P2.2 KEY1:SETB P2.2 ;按调整分键按调整分键 JB P2.2,KEY2 JB P2.2,KEY2 INC 32H INC 32H 实验五:实验五:电子钟参考程序电子钟参考程序 MOV A,32H MOV A,32H ;分计数器分计数器+1+1 CJNE A,#60,KEY9 CJNE A,#60,KEY9 MOV 32H,#0 MOV 32H,#0 LJMP KEY9 LJMP KEY9KEY2:SETB P2.3 ;KEY2:SETB P2.3 ;按调整秒键按调整秒键 JB P2.3,KEY9 JB P2.3,KEY9 INC 31H ;INC 31H ;秒计数器秒计数器+1+1 MOV A,31H MOV A,31H CJNE A,#60,KEY9 CJNE A,#60,KEY9 MOV 31H,#0 MOV 31H,#0KEY9:NOPKEY9:NOP RET RET实验五:实验五:电子钟参考程序电子钟参考程序 ;=延时子程序延时子程序 =DELAYDELAY:MOV R6MOV R6,#50#50DELA1:MOV R7,#250DELA1:MOV R7,#250DELA2DELA2:NOPNOP DJNZ R7DJNZ R7,DELA2DELA2 DJNZ R6 DJNZ R6,DELA1DELA1 RET RET NOP NOP ;=END END