标题:
51单片机中断优先级汇编程序
[打印本页]
作者:
daniu
时间:
2014-12-27 17:24
标题:
51单片机中断优先级汇编程序
;============================================================
;程序编写人:兰建文
;编写地点:51hei培训机构
;时间:5月23日下午 星期六
;功能:本程序实现P0口的对2个数码管显示0到99,一个按键实现加1,
; 到99回到0;一个按键实现减1,减到0回到99,低电平亮
;P2口实现对数码管的片选功能
;============================================================
;=======================开始初始化===========================
SHUCHU EQU P2 ;定义P0口为输出口
SHUZI EQU 30H ;设置处理数据存放地址
;========================程序开始===========================
ORG 00H ;程序开始
LJMP START ;跳到MAIN
ORG 03H
JMP INIT_0
ORG 13H
JMP INIT_1
ORG 0030H ;入口地址
START:
CALL INIT
MOV SP,#60H
MOV SHUZI,#00
MOV DPTR,#TAB ;查表初始化
;==========================主程序=============================
MAIN:CALL CHULI ;计算处理
CALL XIANSHI ;显示
JMP MAIN
;=============开启外部中断0和外部中断1子程序=================
;输入:无
;输出:无
;实现的功能:开启中断0和外部中断1
;============================================================
INIT:MOV IE,#85H
MOV TCON,#05H
SETB PX1
RET
;========================处理子程序==========================
;输入:30H
;输出:"A和B"
;实现的功能:把30H的数据的十位和个位分离出来,分别放A和B中
;============================================================
CHULI:MOV A,SHUZI ;数据放在A中
MOV B,#10 ;除数放在B中
DIV AB ;商放在A中,余数放在B中
RET
;========================显示子程序==========================
;输入:"A"
;输出:"P0口"
;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
;============================================================
XIANSHI:MOVC A,@A+DPTR
MOV SHUCHU,A ;显示十位
MOV P1,#01H
CALL DELAY
MOV SHUCHU,#0FFH
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;显示个位
MOV P1,#02H
CALL DELAY
MOV SHUCHU,#0FFH
RET
;===================外部中断0服务程序========================
;输入:无
;输出:外部中断0
;实现的功能:响应一次外部中断0,30H内容实现加1
;============================================================
INIT_0:MOV A,SHUZI
INC A
CJNE A,#100,NEXT0
MOV SHUZI,#00
JMP LL0
NEXT0:MOV SHUZI,A
LL0:RETI
;===================外部中断1服务程序========================
;输入:无
;输出:外部中断1
;实现的功能:响应一次外部中断0,30H内容实现减2
;============================================================
INIT_1:
MOV A,SHUZI
CJNE A,#1,NEXT1
MOV SHUZI,#99
JMP LL1
NEXT1:CJNE A,#0,NEXT2
MOV SHUZI,#98
JMP LL1
NEXT2:SUBB A,#2
MOV SHUZI,A
LL1:RETI
;========================延时程序============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;============================================================
DELAY:
MOV R6,#80
L7:MOV R5,#80
DJNZ R5,$
DJNZ R6,L7
RET
;=====================共阳查表数据============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序结束==============================
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1