简单秒表00-99按键中断 两位数码管
单片机源程序如下:
- ORG 0000H ;在000H单元存放转移指令
- AJMP MAIN ;转移到主程序
- ORG 0003H ;主程序从0030H开始
- LJMP ZD
- ORG 0030H ;主程序从0030H开始
- MAIN:
- SETB EA ;开总中断
- SETB EX0 ;开中断0
- SETB IT0 ;设置中断0的触发方式为下降沿触发
- MOV P0,#00H ;数码管显示初值
- SETB P2.6 ;
- SETB P2.7
- MOV R0,#00H ;开始计时显示
- MOV R1,#00H
- MOV R2,#140
- MOV R3,#0AH
- MOV R4,#0AH
-
- MOV DPTR,#TAB ;置共阳字段码表首址
-
- L0: MOV A,R0
- MOVC A,@A+DPTR ;查段码表
- MOV P2,#040H
- MOV P0,A
- ACALL DELAY
- MOV A,R1
- MOVC A,@A+DPTR ;查段码表
- MOV P2,#80H
- MOV P0,A
- ACALL DELAY ;调用延时程序
-
- DJNZ R2,L0
-
- INC R0
- MOV R2,#140
-
- DJNZ R3,L0
- MOV R0,#00H
- MOV R3,#0AH
- INC R1
- DJNZ R4,L0
- AJMP MAIN ;返回主程序
- DELAY: ;误差 -0.868055555556us
- MOV R6,#0FBH ;延时程序
- DL0:
- MOV R5,#04H
- DJNZ R5,$
- DJNZ R6,DL0
- RET
- ZD:
- MOV R0,#30
- MOV R1,#200
- MOV R2,#200
- H:
- DJNZ R0,H
- MOV R0,#30
- CPL P1.7
- DJNZ R1,H
- MOV R1,#200
- DJNZ R2,H
- MOV R0,#00H
- MOV R1,#00H
- MOV R2,#140
- MOV R3,#0AH
- MOV R4,#0AH
- RETI
-
- TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H ;
- END
复制代码
所有资料51hei提供下载:
秒表.zip
(46.61 KB, 下载次数: 69)
|