懂avr和lcd的近来看看
偶是avr初学者,现在在搞avr的lcd开发。
写了如下两个程序,目的都是为点亮某一8字lcd的管脚。
lcd管脚用pa口的1,3脚和pc口的6脚输出。
现在的问题是程序a用循环的做的通过了,程序b用定时器0做的死活不肯点亮。
请达人指点~
已知:lcd要信号翻转轮流输入两极才能点亮。因为我用的不是lcd模块,所以直接
接在单片机引脚上。
程序a:
.include"8515def.inc"
.def temp=r20
.def temp1=r21
.org $0000
rjmp lcd
.org $0010
lcd: ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
ldi r16,$19
ser r17
out ddra,r17
out ddrc,r17
ldi temp,$0a
out ddra,temp
ldi temp,$40
out ddrc,temp
lp: ldi temp,$00
out porta,temp
ldi temp1,$40
out portc,temp1
rcall delay
ldi temp,$0a
out porta,temp
ldi temp1,$00
out portc,temp1
rcall delay
rjmp lp
delay: push r16
l0:push r16
l1:push r16
l2:push r16
l3:dec r16
brne l3
pop r16
dec r16
brne l2
pop r16
dec r16
brne l1
pop r16
dec r16
brne l0
pop r16
ret
程序b:
.include"8515def.inc"
.def temp=r20
.def temp1=r21
.def temp2=r22
.def temp3=r23
.def temp4=r24
.def temp5=r25
.org $000
rjmp reset
.org $007
rjmp intt0
intt0: cpi temp4,$ff
brne a
out porta,temp
out portc,temp2
clr temp4
rjmp b
a: out porta,temp2
out portc,temp1
ser temp4
b: out tcnt0,temp3
reti
.org $010
reset:
ldi temp,$0a
out ddra,temp
ldi temp1,$40
out ddrc,temp1
ldi temp2,$00
out porta,temp2
out portc,temp1
ser temp4
ldi temp3,128
out tcnt0,temp3
ldi temp5,$05
out tccr0,temp5
ldi temp5,$02
out timsk,temp5
sei
c: rjmp c
发表时间:2003年7月20日9:44:58