⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11231.asm

📁 单片机开发资料光盘-双龙-686M.zip
💻 ASM
字号:
.include "8535def.inc"
 .org $0000
 rjmp reset
 .org $00b
 rjmp UART_RXC
tab:.db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f  ;七段码表
reset: ldi r16,low(ramend)      ;栈指针置初值
       out spl,r16
       ldi r16,high(ramend)
       out sph,r16
       ldi r16,$ff              ;定义PB口为输出口 
       out ddrb,r16
       ldi r16,$7f              ;定义PD7为输入,PD0~PD6为输入
       out ddrd,r16
       sbi portd,7              ;定义PD7带上拉输入
       ldi r16,$98              ;定义串收、串发且允许中断	   
       out ucr,r16
       sei
       ldi r16,51               ;定义波特率为9600
       out ubrr,r16
       ldi r21,3                ;显示缓冲区先送0、1、2、3
       ldi r20,2
       ldi r19,1
       ldi r18,0 
       ldi Xl,$10               ;发送缓冲区指针X置初值               
       ldi Xh,$01 
       ldi Yl,$12               ;接收缓冲区指针Y置初值
       ldi Yh,$00
       ldi r16,5                ;SRAM$110~$113送5、6、7、8
       sts $110,r16
       ldi r16,6
       sts $111,r16
       ldi r16,7
       sts $112,r16
       ldi r16,8
       sts $113,r16       
aa:    rcall smiao4             ;动态扫描
       in r16,pind              ;读PD7,有键按下就转异步发送
       sbrs r16,7
       rjmp bb
       rjmp aa                  ;否则继续动态扫描
bb:    ldi r17,4                ;共发4个字节
cc:    ld r16,X+                ;发一个字节              
       out udr,r16
dd:    sbis usr,udre
       rjmp dd
       dec r17                  ;没发完4个,继续发      
       brne cc      
ee:    rcall smiao4             ;动态扫描
       rjmp ee 
smiao4:ldi r16,$fb              ;选中PD2,先显示个位
       out portd, r16      
       mov r23,r18              ;将待显示的数放在R23中   
       rcall cqb                ;查七段码送字线
       rcall t1ms               ;延时1ms
       ldi r16,$f7              ;选中PD3,先显示十位
       out portd, r16
       mov r23,r19              ;将待显示的数放在R23中
       rcall cqb                ;查七段码送字线
       rcall t1ms               ;延时1ms
       ldi r16,$ef              ;选中PD4,先显示百位
       out portd,r16
       mov r23,r20              ;将待显示的数放在R23中
       rcall cqb                ;查七段码送字线
       rcall t1ms               ;延时1ms  
       ldi r16,$df              ;选中PD5,先显示千位
       out portd,r16
       mov r23,r21              ;将待显示的数放在R23中
       rcall cqb                ;查七段码送字线
       rcall t1ms               ;延时1ms      
       ret 
UART_RXC:
       in r1,sreg               ;保护标志寄存器
       in r22,udr               ;读UART数据寄存器  
       st Y+,r22                ;送r18~r21中1个寄存器
       out sreg,r1              ;恢复标志寄存器
       reti             
cqb:   ldi zh,high(tab*2)       ;七段码的首地址给Z
       ldi zl,low(tab*2)
       add zl,r23               ;首地址+偏移量
       lpm                      ;查表送B口输出
       out portb,r0               
       ret

t1ms:  ldi r24,71               ;延时1毫秒子程
       push r24
del2:  push r24
del3:  dec r24
       brne del3
       pop r24
       dec r24
       brne del2
       pop r24
       ret 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -