sbis PINd,01 ;I/O口的位被置位跳行,检测到PD1按下否
rjmp getseed ; 检测到PD1按下转
dec temp2 ;-1
brne dspfm1 ;不为0转
dec dspn ; 初始画面次数-1
brne dspfm ; 不为0转
rjmp start ;转到显示初始动画
getseed:inc temp ;+`1,根据PD1按下的时间,选择随机数种子
sbis pind,01 ; I/O口的位被置位跳行,检测到PD1按下否
rjmp getseed ; 检测到PD1按下,继续计数
andi temp,0x1f ;按钮松开,取随机数种子与0X0F加
ldi zh,high(randtb*2)
ldi zl,low(randtb*2)
add zl,temp
lpm
MOV rdata,r0 ;得到随机数种子
next: ldi dspn,0x08 ;显示8个不同的随机数;
repeet: rcall randm ;调用产生随机数子程序
rcall dspnumber ;调用显示8个不同的随机数
dec dspn ;-1
brne repeet ;dspn不为0转
rcall randm ; 调用产生随机数子程序
guess1: rcall dspnumber ;调用显示同一随机数,直到有键按下
sbIC pind,01 ;松开后再往下执行(I/O口清零跳行)
rjmp guess1 ;转显示同一随机数,直到有键按下
wait: rcall dspnumber ;
sbis pind,01
rjmp wait ;等待按钮按下
ldi rdata9,0x03 ;显示动画三次
start0: ldi dspn,0x06 ;每次显示六幅画面
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)
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:单片机 AVR单片机,单片机-工控设备 - AVR单片机