这是之前做的外部中断控制数码管动态显示数字的程序,
使用汇编代码,基于51单片机,
附件包含单片机汇编源码,
和Proteus仿真图,以及hex文件,
完全自己原创,望多
单片机汇编语言源程序:
- ORG 0000H ;开始
- LJMP START ;跳转到主程序
- ORG 0003H ;外部中断0
- LJMP PINT0 ;跳转到0号中断服务子程序
- ORG 0013H ;外部中断1
- LJMP PINT1 ;跳转到2号中断服务子程序
- ORG 0100H ;程序地址
- START: MOV SP, #60H ;设置堆栈
- MOV P0,#0FFH ;P0初始化为FF
- MOV P2,#00H ;P2口初始化为0
- SETB IT0 ;设置0号中断触发方式为下降沿触发
- SETB IT1 ;设置2号中断触发方式为下降沿触发
- SETB EA ;合上中断总开关(允许中断)
- SETB EX0 ;合上分开关
- SETB EX1 ;合上分开关
- MOV R1,#00H ;R1清零
- MOV R2,#00H ;R2清零
- MOV R3,#00H ;R3清零
- MOV R4,#00H ;R4清零
- MOV A,#11H ;A设初值
- LJMP MAIN ;初始化完成,进入主程序
-
- ORG 0200H ;主程序地址
- MAIN: MOV P2,A ;选择位选线
- MOV 31H,R1 ;千位存入31H单元
- MOV 32H,R2 ;百位存入32H单元
- MOV 34H,R3 ;十位存入34H单元
- MOV 38H,R4 ;个位存入38H单元
- PUSH ACC ;保护现场
- ANL A,#0FH ;保留A的第四位
- ADD A,#30H ;使A与数位存放地址对应
- MOV R0,A ;数位存放地址存入R0
- MOV A,@ R0 ;取所需数位的数字
- LCALL DISPLAY ;查表
- MOV P0,A ;显示所需数字
- LCALL DELAY ;延时
- POP ACC ;恢复现场
- RL A ;A左循环移位
- SJMP MAIN ;死循环
-
- ORG 0400H ;0号中断服务子程序地址
- PINT0: CJNE R4,#9,L1 ;个位不为9跳转
- CJNE R3,#9,L2 ;十位不为9跳转
- CJNE R2,#9,L3 ;百位不为9跳转
- CJNE R1,#9,L4 ;千位不为9跳转
- MOV R1,#00H ;千位置零
- MOV R2,#00H ;百位置零
- MOV R3,#00H ;十位置零
- MOV R4,#00H ;个位置零
- RETI ;中断返回
- L1:INC R4 ;个位加一
- RETI ;中断返回
- L2:INC R3 ;十位加一
- MOV R4,#00H ;个位置零
- RETI ;中断返回
- L3:INC R2 ;百位加一
- MOV R4,#00H ;个位置零
- MOV R3, #00H ;十位置零
- RETI ;中断返回
- L4:INC R1 ;千位加一
- MOV R2,#00H ;百位置零
- MOV R3,#00H ;十位置零
- MOV R4,#00H ;个位置零
- RETI ;中断返回
-
- ORG 0600H ;2号中断服务子程序地址
- PINT1: CJNE R4,#0,LA ;个位不为0跳转
- CJNE R3,#0,LB ;十位不为0跳转
- CJNE R2,#0,LC ;百位不为0跳转
- CJNE R1,#0,LD ;千位不为0跳转
- MOV R1,#9 ;千位置9
- MOV R2,#9 ;百位置9
- MOV R3,#9 ;十位置9
- MOV R4,#9 ;个位置9
- RETI ;中断返回
- LA:DEC R4 ;个位减一
- RETI ;中断返回
- LB:DEC R3 ;十位减一
- MOV R4,#9 ;个位置9
- RETI ;中断返回
- LC:DEC R2 ;百位减一
- MOV R4,#9 ;个位置9
- MOV R3,#9 ;十位置9
- RETI ;中断返回
- LD:DEC R1 ;千位减一
- MOV R2,#9 ;百位置9
- MOV R3,#9 ;十位置9
- MOV R4,#9 ;个位置9
- RETI ;中断返回
-
- ORG 0800H ;延时子程序地址
- DELAY: MOV R7, #30 ;设置外层循环次数
- DEL1: MOV R6,#40 ;设置内层循环次数
- DEL2: DJNZ R6,DEL2 ;内层循环
- DJNZ R7,DEL1 ;外层循环
- RET ;返回
-
- ORG 2600H ;查表子程序地址
- DISPLAY: ADD A, #01H ;查表位置调整
- MOVC A, @A+PC ;查表
- RET ;返回
-
- TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;7段码常数表
- END ;程序结束
复制代码
多指教全部资料51hei下载地址:
10-27-外部中断控制数码管动态显示4位数字.zip
(10.14 KB, 下载次数: 55)
|