MOV DAT,R1
LCALL SEND_LED
MOV ADDR,#01H MOV A,HOUR MOV B,#10 ;有误 DIV AB MOV R1,A MOV DAT,B
LCALL SEND_LED
MOV ADDR,#00H MOV DAT,R1
LCALL SEND_LED
MOV ADDR,#07H MOV A,KEY MOV B,#10 DIV AB MOV DAT,B MOV R1,A
LCALL SEND_LED
MOV ADDR,#06H MOV DAT,R1
LCALL SEND_LED RET SEND_LED:
MOV DPTR, #SEG_ADDR MOV A,ADDR
MOVC A,@A+DPTR LCALL WR_595
MOV DPTR, #SEG_DAT MOV A,DAT
MOVC A,@A+DPTR LCALL WR_595 LCALL OUT_595 RET OUT_595:
CLR STCP_595 //; NOP NOP
SETB STCP_595 RET WR_595:
;显示个位的时 ;显示十位的时 ;显示个位的按键数 ;显示十位的按键数存储寄存器输入
MOV R5,#8H ;数码管的8位 LOOP1: RLC A ;带进位位左移 MOV DS_595,C //;送数据进595 //;移位寄存器时钟,根据DATASHEET,送数据进去要一个SCK时钟周期。 CLR SHCP_595 NOP NOP
SETB SHCP_595
DJNZ R5,LOOP1 //;8位数据是否送完 DJNZ只能处理寄存器和地址 RET DELAY:;12MS: MOV R5,#48 DEL:
MOV R6,#250 DJNZ R6,$ DJNZ R5,DEL RET
/*CLR_595:
MOV A,#0FFH LCALL WR_595 MOV A,#0FFH LCALL WR_595 LCALL OUT_595 RET*/
SEG_DAT : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H SEG_ADDR: DB 01H,02H,04H,08H,10H,20H,40H,80H END
四、实验运行效果及说
五、实验分析与小结
实验时,要注意线路的正确连接,要注意定时器T0的工作方式寄存器TMOD和控制寄存器TCON的使用方法,有效的启动T0的工作,要明白中断的意义,何时执行中断子程序,并且执行时,要注意堆栈的保护断点和恢复断点的功能,计数时,达到99时,要重新置零;显示定时和计数时,要实时通过SEND_LED子程
序向LED数码显示管输送数据,并显示出来。通过本次实验,让我对中断和定时器T0的使用有了进一步的认识,并在以后的单片机实验中,要学会正确的使用中断程序和T0定时器,加深对它们的理解。
六、其它
得分(百分制)