📄 main.s
字号:
subi R24,128 ; addi 128
subi R24,1
mov R10,R24
.dbline 86
rjmp L44
L43:
.dbline 87
mov R24,R14
cpi R24,2
brne L45
.dbline 88
.dbline 89
mov R24,R12
subi R24,112 ; addi 144
subi R24,1
mov R10,R24
.dbline 90
L45:
L44:
.dbline 91
mov R18,R10
ldi R16,248
rcall _Lcd_Write
.dbline 92
rjmp L50
L47:
.dbline 93
.dbline 94
movw R30,R22
ldd R18,z+0
ldi R16,250
rcall _Lcd_Write
.dbline 95
subi R22,255 ; offset = 1
sbci R23,255
.dbline 96
L48:
.dbline 92
dec R20
L50:
.dbline 92
clr R2
cp R2,R20
brlo L47
.dbline -2
L37:
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r ram_address 10 c
.dbsym r i 20 c
.dbsym r lcd_pointer 22 pc
.dbsym r xpos 12 c
.dbsym r ypos 14 c
.dbend
.dbfunc e Hzk_Dis_Data _Hzk_Dis_Data fV
; ram_address -> R14
; i -> R10
; num -> R12
; data -> y+14
; xpos -> y+12
; ypos -> y+10
.even
_Hzk_Dis_Data::
rcall push_arg4
rcall push_gset5
ldd R12,y+18
.dbline -1
.dbline 106
; lcd_pointer++;
; }
;
; }
;
; /****************发送数据子程序******************
; ** xpos为列数,ypos为行数
; **data为数据
; **num数据占用得位数
; *********************************************************/
; void Hzk_Dis_Data(Byte ypos,Byte xpos,Long data,Byte num)
; {
.dbline 107
; Byte i=0,ram_address;//ram_address:首地址
clr R10
.dbline 108
; if(num<16)
mov R24,R12
cpi R24,16
brlo X1
rjmp L52
X1:
.dbline 109
; {
.dbline 110
; for(i=0;i<num;i++)
rjmp L57
L54:
.dbline 111
.dbline 112
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+14
ldd R3,z+15
ldd R4,z+16
ldd R5,z+17
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R3,R10
clr R4
mov R30,R12
clr R31
sub R30,R3
sbc R31,R4
ldi R24,<_lcd_buf-1
ldi R25,>_lcd_buf-1
add R30,R24
adc R31,R25
std z+0,R2
.dbline 113
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+14
ldd R3,z+15
ldd R4,z+16
ldd R5,z+17
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R28
std z+14,R16
std z+15,R17
std z+16,R18
std z+17,R19
.dbline 114
L55:
.dbline 110
inc R10
L57:
.dbline 110
cp R10,R12
brsh X2
rjmp L54
X2:
.dbline 116
; {
; lcd_buf[num-i-1]= data%10+0x30;
; data /= 10;
; }
; //输入灭零程序
; if(ypos==1)
ldd R24,y+10
cpi R24,1
brne L59
.dbline 117
; {
.dbline 118
; ram_address = 0x80+xpos-1;
ldd R24,y+12
subi R24,128 ; addi 128
subi R24,1
mov R14,R24
.dbline 119
; }
rjmp L60
L59:
.dbline 120
; else if(ypos==2)
ldd R24,y+10
cpi R24,2
brne L61
.dbline 121
; {
.dbline 122
; ram_address = 0x90+xpos-1;
ldd R24,y+12
subi R24,112 ; addi 144
subi R24,1
mov R14,R24
.dbline 123
; }
L61:
L60:
.dbline 124
; Lcd_Write(0xf8,ram_address);
mov R18,R14
ldi R16,248
rcall _Lcd_Write
.dbline 125
; pointer = lcd_buf;
ldi R24,<_lcd_buf
ldi R25,>_lcd_buf
sts _pointer+1,R25
sts _pointer,R24
.dbline 126
; for(i=0;i<num;i++)
clr R10
rjmp L66
L63:
.dbline 127
.dbline 128
lds R30,_pointer
lds R31,_pointer+1
ldd R18,z+0
ldi R16,250
rcall _Lcd_Write
.dbline 129
lds R24,_pointer
lds R25,_pointer+1
adiw R24,1
sts _pointer+1,R25
sts _pointer,R24
.dbline 130
L64:
.dbline 126
inc R10
L66:
.dbline 126
cp R10,R12
brlo L63
.dbline 131
L52:
.dbline -2
L51:
rcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r ram_address 14 c
.dbsym r i 10 c
.dbsym r num 12 c
.dbsym l data 14 l
.dbsym l xpos 12 c
.dbsym l ypos 10 c
.dbend
.dbfunc e Lcd_Reset _Lcd_Reset fV
.even
_Lcd_Reset::
.dbline -1
.dbline 136
; {
; Lcd_Write(0xfa,*pointer);
; pointer++;
; }
; }
; }
;
;
; void Lcd_Reset(void)
; {
.dbline 137
; LCD_CS_H;//片选置高
sbi 0xb,2
.dbline 138
; Delay_Ms(1);//等待内部复位
ldi R16,1
ldi R17,0
rcall _Delay_Ms
.dbline 139
; Lcd_Write(0xf8,0x30);//使用基本指令集
ldi R18,48
ldi R16,248
rcall _Lcd_Write
.dbline 140
; Lcd_Write(0xf8,0x0c);//整体显示on
ldi R18,12
ldi R16,248
rcall _Lcd_Write
.dbline 141
; Lcd_Write(0xf8,0x01);//清除显示
ldi R18,1
ldi R16,248
rcall _Lcd_Write
.dbline 142
; Delay_Ms(5);//4.6ms
ldi R16,5
ldi R17,0
rcall _Delay_Ms
.dbline 143
; Lcd_Write(0xf8,0x06);//显示右移
ldi R18,6
ldi R16,248
rcall _Lcd_Write
.dbline 144
; LCD_CS_L;//片选置低
cbi 0xb,2
.dbline -2
L67:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Lcd_Write _Lcd_Write fV
; com -> R20
; start -> R22
.even
_Lcd_Write::
rcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 148
; }
;
; void Lcd_Write(Byte start,Byte com)//start :起始字节com:命令/数据
; {
.dbline 149
; LCD_CS_H;//片选置高
sbi 0xb,2
.dbline 150
; Send_8bit(start);
mov R16,R22
clr R17
rcall _Send_8bit
.dbline 151
; Delay_Us(100);//72us
ldi R16,100
rcall _Delay_Us
.dbline 153
; //将data变为datal 0000 datah 0000
; Send_8bit(com&0xf0);
mov R16,R20
clr R17
andi R16,240
andi R17,0
rcall _Send_8bit
.dbline 154
; Delay_Us(100);//72us
ldi R16,100
rcall _Delay_Us
.dbline 155
; Send_8bit((com&0x0f)<<4);
mov R16,R20
clr R17
andi R16,15
andi R17,0
lsl R16
rol R17
lsl R16
rol R17
lsl R16
rol R17
lsl R16
rol R17
rcall _Send_8bit
.dbline 156
; Delay_Us(100);//72us
ldi R16,100
rcall _Delay_Us
.dbline 157
; LCD_CS_L;//片选置低
cbi 0xb,2
.dbline -2
L68:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r com 20 c
.dbsym r start 22 c
.dbend
.dbfunc e Send_8bit _Send_8bit fV
; i -> R20
; x -> R22,R23
.even
_Send_8bit::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 161
; }
;
; void Send_8bit(Word x)
; {
.dbline 163
; Byte i;
; for(i=0;i<8;i++)
clr R20
rjmp L73
L70:
.dbline 164
; {
.dbline 165
; if(x&0x80)//数据线发送数据
sbrs R22,7
rjmp L74
.dbline 166
; {
.dbline 167
; LCD_STD_H;
sbi 0xb,1
.dbline 168
; }
rjmp L75
L74:
.dbline 170
; else
; {
.dbline 171
; LCD_STD_L;
cbi 0xb,1
.dbline 172
; }
L75:
.dbline 173
cbi 0xb,0
.dbline 174
ldi R16,2
rcall _Delay_Us
.dbline 175
sbi 0xb,0
.dbline 176
ldi R16,2
rcall _Delay_Us
.dbline 177
lsl R22
rol R23
.dbline 178
L71:
.dbline 163
inc R20
L73:
.dbline 163
cpi R20,8
brlo L70
.dbline -2
L69:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r x 22 i
.dbend
.area bss(ram, con, rel)
.dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
_lcd_data2::
.blkb 4
.dbsym e lcd_data2 _lcd_data2 l
_lcd_data1::
.blkb 4
.dbsym e lcd_data1 _lcd_data1 l
_pointer::
.blkb 2
.dbsym e pointer _pointer pc
_lcd_buf::
.blkb 10
.dbsym e lcd_buf _lcd_buf A[10:10]c
.area data(ram, con, rel)
.dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
L33:
.blkb 16
.area idata
.byte 212,172,215,212,184,213,58,49,54,54,57,51,55,57,57,0
.area data(ram, con, rel)
.dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -