已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*;文件名: 加减计数.asm;功能:自制MCS-51单片机学习板实验演示程序;说明: 1.4位数码管从0000加计数到9999,再从9999减计数到0000; 2.采用两个字节除法程序处理显示数据; 3.采用定时器中断+延时子程序延时,晶振为11.0592M;代码编写作者:杨鹏勋;QQ:154983799;E-mail: ;最后修改时间: 2007年3月6日;* Divd_High EQU 30H ;存放被除数的高位 Divd_Low EQU 31H ;存放被除数的低位 Divs_High EQU 32H ;存放除数的高位 Divs_Low EQU 33H ;存放除数的低位 Com_High EQU 34H ;存放商的高位 Com_Low EQU 35H ;存放商的低位A_BYTE EQU 36H ;第四位数码管显示缓冲地址 B_BYTE EQU 37H ;第三位数码管显示缓冲地址 C_BYTE EQU 38H ;第二位数码管显示缓冲地址 D_BYTE EQU 39H ;第一位数码管显示缓冲地址 EQUZ_High EQU 3AH ;存放计数值高位 EQUZ_Low EQU 3BH ;存放计数值低位 BCC BIT 00H ;加计数与减计数标志位,低为减计数,高为加计数 ORG 00H AJMP START ;跳到主程序开始 ORG 0BH AJMP INFT0 ;转T0中断服务程序 ORG 30H;* T0中断入口 *;占用通用寄存器R4,累加器A,进位位C,标志位BCC;*INFT0: PUSH ACC ;累加器A入栈保护 PUSH PSW ;程序状态字入栈保护 MOV TH0,#4CH MOV TL0,#08H ;同步时间修正,定时50MS DJNZ R4,INFT0_3 ;判定定时时间1S到否 MOV R4,#20 ;时间到R4赋初值50MS*20=1S JNB BCC,INFT0_1 ;识别是加计数还是减计数,如是减计数则跳转到INFT0_1 INC EQUZ_Low ;计数值低位自增一次 MOV A,EQUZ_Low JNZ INFT0_0 ;判断低位是否计满256次 INC EQUZ_High ;超过256次高位增1INFT0_0: MOV A,EQUZ_High CJNE A,#27H,INFT0_3 ; MOV A,EQUZ_Low CJNE A,#0FH,INFT0_3 ;判断是否加计数到9999 CPL BCC ;到则置低标志位,下次中断到时变为减计数 SJMP INFT0_3 ;INFT0_1: DEC EQUZ_Low ;计数值低位自减一次 MOV A,EQUZ_Low CJNE A,#0FFH,INFT0_2 ;判断低位是否减满256次 DEC EQUZ_High ;超过256次低位减1INFT0_2: MOV A,EQUZ_High JNZ INFT0_3 ; MOV A,EQUZ_Low JNZ INFT0_3 ;判断是否减计数到0000 CPL BCC ;到则置高标志位,下次中断到时变为加计数INFT0_3: POP PSW ;程序状态字出栈恢复 POP ACC ;累加器出栈恢复 RETI ;中断退出;*主程序开始*;*START:MOV SP,#50H MOV TMOD,#01H ;设为T0工作方式1 MOV TH0,#4CH MOV TL0,#00H ;T0定时50MS SETB EA ;开总中断使能 SETB ET0 ;开T0中断使能 SETB TR0 ;开定时器T0 SETB BCC ;开始时设为加计数 MOV R4,#20 ;定时1S加减计数一次 MOV EQUZ_High,#00H ; MOV EQUZ_Low,#00H ;赋初值,从0000开始计数START_1: LCALL PROCEG ;调用数据处理程序 LCALL DISPLAY ;调用显示子程序 SJMP START_1 ;返回循环;*数据处理程序*;占用通用寄存器R1、R2、R3,累加器A,进位位C;*PROCEG: MOV Divd_High,EQUZ_High;计数值高位赋给被除数高位 MOV Divd_Low,EQUZ_Low ;计数值低位赋给被除数低位 MOV Divs_High,#03H MOV Divs_Low,#0E8H ;除以1000,取千位数据 LCALL DWDIV ;调用除法子程序 MOV A_BYTE,Com_Low ;得到千位的值 MOV Divs_High,#00H MOV Divs_Low,#64H ;除以100,取百位数据 LCALL DWDIV ;调用除法子程序 MOV B_BYTE,Com_Low ;得到百位的值 MOV Divs_High,#00H MOV Divs_Low,#0AH ;除以10,取十位数据 LCALL DWDIV ;调用除法子程序 MOV C_BYTE,Com_Low ;得到十位的值 MOV D_BYTE,Divd_Low ;得到个位的值 RET;*显示子程序*;占用通用寄存器R6、R7,累加器A;*DISPLAY: MOV DPTR,#TAB ;送段码表首址 MOV A,A_BYTE ;查千位数据 MOVC A,A+DPTR ;查表取数据 MOV P0,A ;送P0口显示 MOV P2,#0FDH ;选通第四位数码管 LCALL DELAY2MS ;延时2毫秒 MOV A,B_BYTE ;查百位数据 MOVC A,A+DPTR ;查表取数据 MOV P0,A ;送P0口显示 MOV P2,#0FBH ;选通第三位数码管 LCALL DELAY2MS ;延时2毫秒 MOV A,C_BYTE ;查十位数据 MOVC A,A+DPTR ;查表取数据 MOV P0,A ;送P0口显示 MOV P2,#0F7H ;选通第二位数码管 LCALL DELAY2MS ;延时2毫秒 MOV A,D_BYTE ;查个位数据 MOVC A,A+DPTR ;查表取数据 MOV P0,A ;送P0口显示 MOV P2,#0EFH ;选通第一位数码管 LCALL DELAY2MS ;延时2毫秒 RET;* 两字节除法处理程序(移位相减) *;占用通用寄存器R1、R2、R3,累加器A,进位位C;被除数高位放Divd_High,低位放Divd_Low ;除数高位放Divs_High,低位放Divs_Low ;除后商的高位放在Com_High,低位放在Com_Low ;余数的高位放在Divd_High,低位放在Divd_Low单元 ;*DWDIV: CLR A ;累加器A清零 MOV R2,A ; MOV R3,A ;R2、R3清零 MOV R1,#10HDWDIV_LOOP: CLR C ;清进位位C MOV A,Divd_Low RLC A MOV Divd_Low,A ;被除数低位带进位位左移一位 MOV A,Divd_High RLC A MOV Divd_High,A ;被除数高位带进位位左移一位 MOV A,R2 RLC A MOV R2,A ;R2带进位位左移一位 MOV A,R3 RLC A MOV R3,A ;R3带进位位左移一位 CJNE A,Divs_High,DWDIV1;判断被除数高位移过来的值是否等于除数高位 LJMP DWDIV2 ;等于转DWDIV2处理DWDIV1: JC DWDIV4 ;若小于则转DWDIV4继续移位,大于则顺序执行 CLR C ;清进位位C MOV A,R2 SUBB A,Divs_Low ;R2内的值减去除数低位 MOV R2,A ;低位余数返回给R2 MOV A,R3 SUBB A,Divs_High ;R3内的值减去除数高位 MOV R3,A ;高位余数返回给R3 INC Divd_Low ;因够减,商的相应位置1 LJMP DWDIV4 ;转DWDIV4继续移位DWDIV2: MOV A,R2 CJNE A,Divs_Low,DWDIV3 ;判断移过来的低位是否等于除数低位 MOV R2,#00H MOV R3,#00H ;相等则R2、R3为零 INC Divd_Low ;因够减,商的相应位置1 LJMP DWDIV4 ;转DWDIV4继续移位DWDIV3: JC DWDIV4 ;若小于则转DWDIV4继续移位,大于则顺序执行MOV A,R2 CLR C ;清进位位C SUBB A,Divs_Low ;R2内的值减去除数低位 MOV R2,A ;低位余数返回给R2 MOV A,R3 SUBB A,Divs_High ;R3内的值减去除数高位 MOV R3,A ;高位余数返回给R3 INC Divd_Low ;因够减,商的相应位置1DWDIV4: DJNZ R1,DWDIV_LOOP ;循环16次后以上等同于将被除数高位移到R3,低位移到R2 MOV Com_low,Divd_Low ;送得到的商的低位送Com_low MOV Com_high,Divd_High;送得到的商的高位送Com_high MOV Divd_Low,R2 ;送余数低位给Divd_Low MOV Divd_High,R3 ;送余数高位给Divd_High RET;* 延时子程序(2MS) *;(248*2+4)*4+3=200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026本科英语面试题及答案
- 2026北京社工面试题题及答案
- 2025年中国环保型电热气化加压垫市场调查研究报告
- 2025年中国火灾报警区域显示器市场调查研究报告
- 2025年中国浴缸冷热水嘴市场调查研究报告
- 2025年中国汽油电喷车喷油嘴清洗剂市场调查研究报告
- 2025年中国多路电池测量仪馈线屏市场调查研究报告
- 2026北京链家面试题及答案
- 异常分娩的护理效果评价
- 老年人长期照护康复计划制定
- 7.5 歌曲 《红河谷》课件(20张)
- 人工智能导论智慧树知到期末考试答案章节答案2024年哈尔滨工程大学
- 新大象版四年级下册科学全册知识点(精编版)
- 磨床操作培训课件
- GB/T 43189-2023核仪器仪表闪烁体和闪烁探测器的命名(标识)以及闪烁体的标准尺寸
- 预制钢筋混凝土方桩图集
- 汽车电工电子技术PPT(高职)完整全套教学课件
- 民用航空器活动区驾驶员笔试备考题库(含答案)
- 三体系管理手册
- 辣椒初加工项目可研
- GB/T 778.1-2018饮用冷水水表和热水水表第1部分:计量要求和技术要求
评论
0/150
提交评论