完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
ADHEX DATA 054H
OUTPUT BIT P1.4 ;PWM 输出 DBUF DATA 030H COUNT EQU 50H ;计数值 INT_L EQU 51H ;中断计数缓冲单元低地址 COUNT_tiME EQU 52H ;时间中断数 TTM EQU 5 ;软件计数值50mS*10=500mS PWM_H EQU 55H ;PWM高脉冲宽度 PWM_L EQU 56H ;PWM低脉冲宽度 BIT_COUNT DATA 020H DATA_OUT DATA 021H TIMER DATA 022H CLK BIT P1.6 DAT BIT P1.7 DAT0 BIT P1.2 CLK0 BIT P1.3 CS BIT P1.1 ORG 0000H LJMP START ORG 0003H ;外部中断EX0入口地址 LJMP EX_INT0 ;外部中断服务程序 ORG 000BH LJMP INTS_T0 ;定时器T0中断服务程序 ORG 0100H START: CLR A MOV P1,A ;关闭不相干的发光管 MOV SP,#60H ;设置sp指针 CLR OUTPUT ;停止 MOV PWM_H,#50 ;设置初始速度 MOV PWM_L,#50 MOV INT_L,#00H MOV COUNT,#00H MOV COUNT_TIME,#TTM MOV TMOD,#01H ;T0定时器 MOV TL0,#98H ;50ms (65536-17000*12/12=BD98) MOV TH0,#0BDH MOV COUNT_TIME,#TTM SETB TR0 ;开始定时操作 SETB ET0 ;允许定时中断 CLR C ;清进位标志 SETB IT0 ;设置中断触发方式:脉冲触发 SETB EX0 ;允许外部中断EX0中断 SETB EA ;总的中断允许 MLOOP: CLR EA LCALL AD MOV PWM_H,r7 MOV A,R7 CPL A MOV R7,A MOV PWM_L,R7 SETB ITO SETB EX0 SETB EA LCALL TOBCD ;十六进制整数转换成BCD码整数 LCALL DRIVE ;驱动输出 LCALL DisplayResult ;BCD码整数拆开两个字节 LCALL DRIVE ;驱动输出 LCALL DRIVE ;驱动输出 LJMP MLOOP INTS_T0: ;定时器T0中断服务程序 PUSH ACC CLR TR0 DJNZ COUNT_TIME,BACK ;软件计数,次数不到返回 MOV COUNT_TIME,#TTM MOV INT_L,COUNT ;刷新显示部分 LCALL DISPLAY LJMP BACK ;显示 MOV COUNT,#00H MOV A,INT_L SJMP BACK BACK: POP ACC MOV TMOD,#01H ;T0定时器 MOV TL0,#98H ;50ms (65536-17000*12/12=BD98) MOV TH0,#0BDH SETB TR0 ;重新开始定时操作 RETI EX_INT0: ;外部中断服务程序 INC COUNT ;将中断缓冲区低地址加1 MOV A,COUNT ;判断是否有进位 RETI ;中断返回 DRIVE: ;PWM驱动输出 SETB OUTPUT MOV R0,PWM_H LCALL DELAY3 CLR OUTPUT MOV R0,PWM_L LCALL DELAY3 RETDISPLAY: ANL P2,#00H ; CS7279有效 MOV DATA_OUT,#10100100B ; A4H,复位命令 CALL SEND MOV DATA_OUT,#10000000B ; 在第一个数码管上显示 CALL SEND MOV DATA_OUT,DBUF CALL SEND MOV DATA_OUT,#10000001B ; 译码方式0,2位显示在第二个数码管上显示 CALL SEND MOV DATA_OUT,DBUF+1 CALL SEND MOV DATA_OUT,#10000010B ; 译码方式0,3位显示在第三个数码管上显示 CALL SEND MOV DATA_OUT,DBUF+2 CALL SEND MOV DATA_OUT,#10000011B ; 译码方式0,4位显示在第四个数码管上显示 CALL SEND MOV DATA_OUT,DBUF+3 CALL SEND MOV DATA_OUT,#10000100B ; 译码方式0,5位显示在第五个数码管上显示 CALL SEND MOV DATA_OUT,DBUF+4 CALL SEND RET AD: ACALL TLC549_ADC MOV R7,#0 DJNZ R7,$ ACALL TLC549_ADC MOV R7,A ;存转换结果 MOV ADHEX,A MOV R7,A RETTLC549_ADC: ;串行显示处理程序,结果存在A中 CLR A CLR CLK0 CLR CS MOV R6,#8 ADLOOP: SETB CLK0 NOP NOP MOV C,DAT0 RLC A CLR CLK0 NOP DJNZ R6,ADLOOP SETB CS SETB CLK0 RETSEND: MOV BIT_COUNT,#8 ; 发送字符子程序 ANL P2,#00H CALL LONG_DELAY SEND_LOOP: MOV C,DATA_OUT.7 MOV DAT,C SETB CLK MOV A,DATA_OUT RL A MOV DATA_OUT,A CALL SHORT_DELAY CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,SEND_LOOP CLR DAT RETLONG_DELAY: MOV TIMER,#80 ;延时约200US DELAY_LOOP: DJNZ TIMER,DELAY_LOOP RETSHORT_DELAY: MOV TIMER,#6 ;延时约20USSHORT_LP: DJNZ TIMER,SHORT_LP RET ; 功能:双字节十六进制整数转换成双字节BCD码整数; 入口条件:待转换的双字节十六进制整数在R6、R7中。; 出口信息:转换后的三字节BCD码整数在R3、R4、R5中。 TOBCD: MOV R7,INT_L MOV R6,#00HHB2: CLR A ;BCD码初始化 MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H ;转换双字节十六进制整数 HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A ;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整 DJNZ R2,HB3 ;处理完16bit ;BCD码拆开送缓存 DisplayResult: mov a, R3 anl a,#0fh mov DBUF+4,A ;R3低四位送缓存0 mov a, R4 swap a anl a,#0fh mov DBUF+3,a ;R4高四位送缓存1 mov a, R4 anl a,#0fh mov DBUF+2,a ;R4低四位送缓存2 mov a, R5 swap a anl a,#0fh mov DBUF+1,a ;R5高四位送缓存3 mov a, R5 anl a,#0fh mov DBUF,a ;R5低四位送缓存4 ret DELAY: LCALL DELAY3 LCALL DELAY3 LCALL DELAY3 LCALL DELAY3 LCALL DELAY3 RETDelay2: mov r5, #2 A0: mov r6, #20 A1: mov r7, #50 DelayLoop: NOP NOP djnz r7, DelayLoop djnz r6, A1 djnz r5, A0 RETDELAY3: MOV R1, #0 DLOOP1: DJNZ R1, DLOOP1 DJNZ R0, DELAY3 RET END |
|
相关推荐
5个回答
|
|
正常学 我也不懂~
|
|
|
|
愁死我了~~
|
|
|
|
还用汇编语言?
|
|
|
|
|
|
|
|
汇编看不懂
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 06:41 , Processed in 0.643446 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号