ldi zh,high(dpfstb*2)
ldi zl,low(dpfstb*2)
dspfm0: rcall ldtb8 ;调用从Z指向的程序区取数据送到内存0080-0087中
ldi temp2,0xa0 ;显示次数
dspfm1a:rcall scan1 ;调用从内存0080-0087中取数据显示一次
dec temp2 ;-1
brne dspfm1a ;不为0转
dec dspn ;显示初始动画次数-1
brne dspfm0 ;不为0转
dec rdata9 ;显示动画三次-1
brne start0 ;不为0转
rjmp next ;转显示8个不同的随机数
dspnumber: ;显示一个0-9数字的子程序
ldi zh,high(numbertb*2)
ldi zl,low(numbertb*2)
add zl,rdata9
rcall ldtb8 ;取数
ldi temp2,0xa0 ;该数字重复显示A0H次
dspn1: rcall scan1
dec temp2
brne dspn1
ret
scan1: push xl ;从内存0080-0087中取数据显示一次
ldi temp,0b01111111
mov scndp,temp
ldi cnt,0x08
col1: out portc,scndp ;显示屏幕的一列
ld r1,x+
out porta,r1
rcall delay
sec
ror scndp
dec cnt
brne col1
pop xl
ret
ldtb8: ldi xl,0x80 ;从Z指向的程序区取数据送到内存0080-0087中
ldi xh,0x00
ldi temp1,0x08
push xl
nexld1: lpm
st x+,r0
ld r0,z+
dec temp1
brne nexld1
pop xl
ret
delay: ;通用延时子程序从略
....
randm: mov temp,rdata ;产生8N(0≤N≤9)随机数子程序
mov temp1,rdata
swap temp1
eor temp,temp1
rol temp1
eor temp,temp1
rol temp1
eor temp,temp1
rol temp
rol rdata
mov rdata9,rdata
andi rdata9,0x0f
cpi rdata9,0x0a
brsh randm ;产生了一个0≤RDATA9≤9的随机数
lsl rdata9
lsl rdata9
lsl rdata9
ret
.cseg
.org dpfstb; ;大小方框字形表
;small o
.db 0b00000000,0b00000000,0b00000000,0b00011000
.db 0b00011000,0b00000000,0b00000000,0b00000000
.db 0b00000000,0b00000000,0b00111100,0b00100100
.db 0b00100100,0b00111100,0b00000000,0b00000000
.db 0b00000000,0b01111110,0b01000010,0b01000010
.db 0b01000010,0b01000010,0b01111110,0b00000000
;big o
.db 0b11111111,0b10000001,0b10000001,0b10000001
.db 0b10000001,0b10000001,0b10000001,0b11111111
上一页 [1] [2] [3] [4] 下一页
本文关键字:单片机 AVR单片机,单片机-工控设备 - AVR单片机