单片机求助,用单片机汇编语言实例写一个双位数码管0到99循环

查看: 4480|回复: 0
数码管显示0到99按键加一汇编程序
;============================================================
;程序编写人:兰建
;编写地点:51hei培训机构
;时间:5月23日下午 星期六
;功能:本程序实现P0口的对2个数码管显示0到99,一个按键实现一次
;按键只递加1次,到99回到0,按着不动不影响数码管动态显示;任何时
;刻,任何一个按键,若按键时间超过3秒,循环显示0到9回到0,时间
;间隔1秒。若时间小于1秒,显示加1,低电平亮
;P2口实现对数码管的片选功能
;===============================================================
;=========================开始初始化============================
& && && &&&SHUCHU& &EQU& & P0& && && & ;定义P0口为输出口
& && && &&&PIANXUAN EQU& &P2& && && &&&;定义P2口为片选口
& && && &&&SHUZI& & EQU& &30H& && && & ;设置处理数据存放地址
& && && &&&JIANBIT0 BIT& &20H.0& && &&&;设置按键标志位
& && && &&&XIAN0& & BIT& &20H.2& && &&&;显示标志位
& && && &&&T_BIT& & BIT& &21H.0& && &&&;设置中断定时器0标志位
& && && &&&MODE& &&&EQU& &01
;========================程序开始==============================
& && && && && && &&&ORG& &00H& && && & ;程序开始
& && && && && && &&&LJMP&&START& && &&&;跳到START
& && && && && && &&&ORG& &0BH& && && & ;中断定时器0入口地址
& && && && && && &&&JMP& &T0_1& && && &;跳到定时器0服务程序
& && && && && && &&&ORG& &0030H& && &&&;入口地址
;=========================主程序===============================& && &&&
& && && && &&&START:MOV& &SP,#60H& && & ;移开指针
& && && && && && &&&MOV& &PIANXUAN,#00&&;片选初始化& && && && &
& && && && && && &&&MOV& &SHUZI,#00& &&&;数据初始化
& && && && && && &&&MOV& &DPTR,#TAB& &&&;查表初始化
& && && && && && &&&MOV& &P1,#0F8H& && &;设置P1.0口为输入
& && && && && && &&&CALL&&INIT& && && & ;开中断
& && && && && && &&&CLR& &JIANBIT0& && &;按键标志位清0
& && && && && && &&&SETB&&T_BIT& && && &;中断标志位置1
& && && && && &MAIN:JNB& &T_BIT,MAIN& &;等待中断
& && && && && && &&&CLR& &T_BIT& && &&&;中断标志位清0& && &
& && && && && && &&&CALL&&JISUAN& && & ;计算分离十位和个位
& && && && && && &&&CALL&&DISPLAY& && &;显示个位和十位
& && && && && && &&&JNB& &JIANBIT0,PANDUAN;按键标志位=1判断P1.3口,若为0则判断按键是否抬起
& && && && && && &&&JNB& &P1.3,XIANSHI0 ;;若P1.3=0则调到XIANSHI0
& && && && && && &&&CLR& &JIANBIT0& &&&;长按标志位清0
& && && && && && &&&CLR& &XIAN0& && &&&;显示标志位清0
& && && && && && &&&JMP& &MAIN& && && &;返回MAIN
& && && && &PANDUAN:JB& & P1.3,NEXT& & ;若按键抬起则返回MAIN,若没有抬起按键标志位清0
& && && && && && &&&SETB&&JIANBIT0
& && && && && &NEXT:JMP& &MAIN
& && && &&&XIANSHI0:& &
& && && && && && &&&JB& & XIAN0,MAIN
& && && && && && &&&SETB&&XIAN0& && && &;显示标志位清0
& && && && && && &&&CALL&&JIACHULI& && &;加处理
& && && && && && &&&JMP& &MAIN
& && && && && &
;====================定时中断0服务子程序========================
;输入:无
;输出:无
;实现的功能:实现定时20MS,影响标志位T_BIT.
;===============================================================
& && && && && &T0_1:MOV& & TMOD,#MODE& & ;定时器1工作方式1
& && && && && && &&&MOV& & TL0,#0E0H& &&&;设置定时初值
& && && && && && &&&MOV& & TH0,#0B1H
& && && && && && &&&SETB& &T_BIT& && && &;定时标志位清0
& && && && && && &&&RETI
;========================中断设置子程序=========================
;输入:无
;输出:无
;实现的功能:初始化设置定时器,设置初值
;===============================================================
& && && && && &INIT:MOV& & TMOD,#MODE& & ;定时器0工作方式1
& && && && && && &&&MOV& & TL0,#0E0H
& && && && && && &&&MOV& & TH0,#0B1H
& && && && && && &&&MOV& & IE,#82H& && & ;开定时器中断0
& && && && && && &&&SETB& &TR0& && && &&&;开定时器0
& && && && && && &&&RET
;========================计算子程序=============================
;输入:30H
;输出:&A和B&
;实现的功能:把30H的数据的十位和个位分离出来
;===============================================================
& && && && & JISUAN:MOV& &A,SHUZI& && &;数据放在A中
& && && && && && &&&MOV& &B,#10& && &&&;除数放在B中
& && && && && && &&&DIV& &AB& && && &&&;商放在A中,余数放在B中
& && && && && && &&&RET& && && && && &
;========================显示子程序=============================
;输入:&A&
;输出:&P0口&
;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
;===============================================================
& && && &&&DISPLAY:MOVC&&A,@A+DPTR& && &&&;查表
& && && && && && & MOV& &SHUCHU,A& && && &;显示十位
& && && && && && & MOV& &PIANXUAN,#02H& & ;片选
& && && && && && & CALL&&DELAY& && && && &;查表
& && && && && && & ;MOV SHUCHU,#0FFH& && &;关闭数码管
& && && && && && & MOV& &A,B& && && && &&&
& && && && && && & MOVC& &A,@A+DPTR& && & ;查表
& && && && && && & MOV& &SHUCHU,A& && && &;显示个位
& && && && && && & MOV& &PIANXUAN,#03H& & ;片选
& && && && && && & CALL&&DELAY& && && && &;延时
& && && && && && & ;MOV SHUCHU,#0FFH& && &;关闭数码管
& && && && && && & RET
;======================加处理子程序=============================
;输入:无
;输出:无
;实现的功能:把30H地址加1
;===============================================================
& && && &JIACHULI:MOV& &A,SHUZI
& && && && && && &CJNE&&A,#99,L0& && && &;若A不等于9,则跳到LL
& && && && && && &MOV& &A,#00& && &
& && && && && && &JMP& &L1
& && && && && &L0:INC& &A& && && && && & ;自加一
& && && && && &L1:MOV& &SHUZI,A
& && && && && && &RET
;========================延时程序===============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;===============================================================
& && && & DELAY:
& && && && && & MOV&&R6,#80
& && && && & L7:MOV&&R5,#80
& && && && & L8:DJNZ R5,L8
& && && && && & DJNZ R6,L7
& && && && && & RET
;=====================共阳查表数据==============================
& && && && &TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序结束================================
& && && && && & END复制代码
Powered by

我要回帖

更多关于 单片机汇编语言教程 的文章

 

随机推荐