📄 atmega8and74hc164controllcd1602program.asm
字号:
.include "m8def.inc"
.org $00
rjmp main
.org $20
main: ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
sbi ddrc,1
cbi portc,1 ;pc1为液晶的数据/指令线(RS)
sbi ddrb,3
sbi portb,3 ;pb3为74hc164的数据线(A,B)
sbi ddrb,2
sbi portb,2 ;pb2为74hc164的时钟线(CLK)
sbi ddrc,2
cbi portc,2 ;pc2为液晶的片选线,高电平有效(E)
ldi r18,0
loop: ldi r31,4
mov r30,r18
lpm r16,z
call yiwei
call delay1
inc r18
cpi r18,6
brlo loop
ldi r16,$80
call yiwei
call delay1
sbi portc,1
ldi r16,$33
call yiwei
call delay1
ldi r16,$34
call yiwei
call delay1
ldi r16,$35
call yiwei
call delay1
wait: rjmp wait
;************************************************
yiwei: ldi r17,8
yiwei0: sbi portb,3
rol r16 ;r16为要移位的数
brcs yiwei1
cbi portb,3
yiwei1: cbi portb,2
sbi portb,2 ;时钟线置1,送出数据
dec r17
cpi r17,1
brsh yiwei0
; sbi portc,2 ;液晶片选置1,给液晶送入数据
; cbi portc,2
sbi portc,2 ;液晶片选置1,给液晶送入数据
cbi portc,2
ret
;*******************************************
delay1: ldi r16,20
del1: ldi r17,255
del2: dec r17
cpi r17,1
brsh del2
dec r16
cpi r16,1
brsh del1
ret
;***********************************************************************
.org $200 ;液晶初始化的值
.db $01,$03,$06,$0f,$14,$3c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -