📄 main.lis
字号:
0258 .dbline 110
0258 A394 inc R10
025A L57:
025A .dbline 110
025A AC14 cp R10,R12
025C 08F4 brsh X2
025E C2CF rjmp L54
0260 X2:
0260 .dbline 116
0260 ; {
0260 ; lcd_buf[num-i-1]= data%10+0x30;
0260 ; data /= 10;
0260 ; }
0260 ; //输入灭零程序
0260 ; if(ypos==1)
0260 8A85 ldd R24,y+10
0262 8130 cpi R24,1
0264 29F4 brne L59
0266 .dbline 117
0266 ; {
0266 .dbline 118
0266 ; ram_address = 0x80+xpos-1;
0266 8C85 ldd R24,y+12
0268 8058 subi R24,128 ; addi 128
026A 8150 subi R24,1
026C E82E mov R14,R24
026E .dbline 119
026E ; }
026E 07C0 rjmp L60
0270 L59:
0270 .dbline 120
0270 ; else if(ypos==2)
0270 8A85 ldd R24,y+10
0272 8230 cpi R24,2
0274 21F4 brne L61
0276 .dbline 121
0276 ; {
0276 .dbline 122
0276 ; ram_address = 0x90+xpos-1;
0276 8C85 ldd R24,y+12
0278 8057 subi R24,112 ; addi 144
027A 8150 subi R24,1
027C E82E mov R14,R24
027E .dbline 123
027E ; }
027E L61:
027E L60:
027E .dbline 124
027E ; Lcd_Write(0xf8,ram_address);
027E 2E2D mov R18,R14
0280 08EF ldi R16,248
0282 33D0 rcall _Lcd_Write
0284 .dbline 125
0284 ; pointer = lcd_buf;
0284 80E0 ldi R24,<_lcd_buf
0286 90E0 ldi R25,>_lcd_buf
0288 90930900 sts _pointer+1,R25
028C 80930800 sts _pointer,R24
0290 .dbline 126
0290 ; for(i=0;i<num;i++)
0290 AA24 clr R10
0292 11C0 rjmp L66
0294 L63:
0294 .dbline 127
0294 .dbline 128
0294 E0910800 lds R30,_pointer
0298 F0910900 lds R31,_pointer+1
029C 2081 ldd R18,z+0
029E 0AEF ldi R16,250
02A0 24D0 rcall _Lcd_Write
02A2 .dbline 129
02A2 80910800 lds R24,_pointer
02A6 90910900 lds R25,_pointer+1
02AA 0196 adiw R24,1
02AC 90930900 sts _pointer+1,R25
02B0 80930800 sts _pointer,R24
02B4 .dbline 130
02B4 L64:
02B4 .dbline 126
02B4 A394 inc R10
02B6 L66:
02B6 .dbline 126
02B6 AC14 cp R10,R12
02B8 68F3 brlo L63
02BA .dbline 131
02BA L52:
02BA .dbline -2
02BA L51:
02BA 00D0 rcall pop_gset5
02BC 2496 adiw R28,4
02BE .dbline 0 ; func end
02BE 0895 ret
02C0 .dbsym r ram_address 14 c
02C0 .dbsym r i 10 c
02C0 .dbsym r num 12 c
02C0 .dbsym l data 14 l
02C0 .dbsym l xpos 12 c
02C0 .dbsym l ypos 10 c
02C0 .dbend
02C0 .dbfunc e Lcd_Reset _Lcd_Reset fV
.even
02C0 _Lcd_Reset::
02C0 .dbline -1
02C0 .dbline 136
02C0 ; {
02C0 ; Lcd_Write(0xfa,*pointer);
02C0 ; pointer++;
02C0 ; }
02C0 ; }
02C0 ; }
02C0 ;
02C0 ;
02C0 ; void Lcd_Reset(void)
02C0 ; {
02C0 .dbline 137
02C0 ; LCD_CS_H;//片选置高
02C0 5A9A sbi 0xb,2
02C2 .dbline 138
02C2 ; Delay_Ms(1);//等待内部复位
02C2 01E0 ldi R16,1
02C4 10E0 ldi R17,0
02C6 C0DE rcall _Delay_Ms
02C8 .dbline 139
02C8 ; Lcd_Write(0xf8,0x30);//使用基本指令集
02C8 20E3 ldi R18,48
02CA 08EF ldi R16,248
02CC 0ED0 rcall _Lcd_Write
02CE .dbline 140
02CE ; Lcd_Write(0xf8,0x0c);//整体显示on
02CE 2CE0 ldi R18,12
02D0 08EF ldi R16,248
02D2 0BD0 rcall _Lcd_Write
02D4 .dbline 141
02D4 ; Lcd_Write(0xf8,0x01);//清除显示
02D4 21E0 ldi R18,1
02D6 08EF ldi R16,248
02D8 08D0 rcall _Lcd_Write
02DA .dbline 142
02DA ; Delay_Ms(5);//4.6ms
02DA 05E0 ldi R16,5
02DC 10E0 ldi R17,0
02DE B4DE rcall _Delay_Ms
02E0 .dbline 143
02E0 ; Lcd_Write(0xf8,0x06);//显示右移
02E0 26E0 ldi R18,6
02E2 08EF ldi R16,248
02E4 02D0 rcall _Lcd_Write
02E6 .dbline 144
02E6 ; LCD_CS_L;//片选置低
02E6 5A98 cbi 0xb,2
02E8 .dbline -2
02E8 L67:
02E8 .dbline 0 ; func end
02E8 0895 ret
02EA .dbend
02EA .dbfunc e Lcd_Write _Lcd_Write fV
02EA ; com -> R20
02EA ; start -> R22
.even
02EA _Lcd_Write::
02EA 00D0 rcall push_gset2
02EC 422F mov R20,R18
02EE 602F mov R22,R16
02F0 .dbline -1
02F0 .dbline 148
02F0 ; }
02F0 ;
02F0 ; void Lcd_Write(Byte start,Byte com)//start :起始字节com:命令/数据
02F0 ; {
02F0 .dbline 149
02F0 ; LCD_CS_H;//片选置高
02F0 5A9A sbi 0xb,2
02F2 .dbline 150
02F2 ; Send_8bit(start);
02F2 062F mov R16,R22
02F4 1127 clr R17
02F6 1BD0 rcall _Send_8bit
02F8 .dbline 151
02F8 ; Delay_Us(100);//72us
02F8 04E6 ldi R16,100
02FA 92DE rcall _Delay_Us
02FC .dbline 153
02FC ; //将data变为datal 0000 datah 0000
02FC ; Send_8bit(com&0xf0);
02FC 042F mov R16,R20
02FE 1127 clr R17
0300 007F andi R16,240
0302 1070 andi R17,0
0304 14D0 rcall _Send_8bit
0306 .dbline 154
0306 ; Delay_Us(100);//72us
0306 04E6 ldi R16,100
0308 8BDE rcall _Delay_Us
030A .dbline 155
030A ; Send_8bit((com&0x0f)<<4);
030A 042F mov R16,R20
030C 1127 clr R17
030E 0F70 andi R16,15
0310 1070 andi R17,0
0312 000F lsl R16
0314 111F rol R17
0316 000F lsl R16
0318 111F rol R17
031A 000F lsl R16
031C 111F rol R17
031E 000F lsl R16
0320 111F rol R17
0322 05D0 rcall _Send_8bit
0324 .dbline 156
0324 ; Delay_Us(100);//72us
0324 04E6 ldi R16,100
0326 7CDE rcall _Delay_Us
0328 .dbline 157
0328 ; LCD_CS_L;//片选置低
0328 5A98 cbi 0xb,2
032A .dbline -2
032A L68:
032A 00D0 rcall pop_gset2
032C .dbline 0 ; func end
032C 0895 ret
032E .dbsym r com 20 c
032E .dbsym r start 22 c
032E .dbend
032E .dbfunc e Send_8bit _Send_8bit fV
032E ; i -> R20
032E ; x -> R22,R23
.even
032E _Send_8bit::
032E 00D0 rcall push_gset2
0330 B801 movw R22,R16
0332 .dbline -1
0332 .dbline 161
0332 ; }
0332 ;
0332 ; void Send_8bit(Word x)
0332 ; {
0332 .dbline 163
0332 ; Byte i;
0332 ; for(i=0;i<8;i++)
0332 4427 clr R20
0334 0EC0 rjmp L73
0336 L70:
0336 .dbline 164
0336 ; {
0336 .dbline 165
0336 ; if(x&0x80)//数据线发送数据
0336 67FF sbrs R22,7
0338 02C0 rjmp L74
033A .dbline 166
033A ; {
033A .dbline 167
033A ; LCD_STD_H;
033A 599A sbi 0xb,1
033C .dbline 168
033C ; }
033C 01C0 rjmp L75
033E L74:
033E .dbline 170
033E ; else
033E ; {
033E .dbline 171
033E ; LCD_STD_L;
033E 5998 cbi 0xb,1
0340 .dbline 172
0340 ; }
0340 L75:
0340 .dbline 173
0340 5898 cbi 0xb,0
0342 .dbline 174
0342 02E0 ldi R16,2
0344 6DDE rcall _Delay_Us
0346 .dbline 175
0346 589A sbi 0xb,0
0348 .dbline 176
0348 02E0 ldi R16,2
034A 6ADE rcall _Delay_Us
034C .dbline 177
034C 660F lsl R22
034E 771F rol R23
0350 .dbline 178
0350 L71:
0350 .dbline 163
0350 4395 inc R20
0352 L73:
0352 .dbline 163
0352 4830 cpi R20,8
0354 80F3 brlo L70
0356 .dbline -2
0356 L69:
0356 00D0 rcall pop_gset2
0358 .dbline 0 ; func end
0358 0895 ret
035A .dbsym r i 20 c
035A .dbsym r x 22 i
035A .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
0000 _lcd_data2::
0000 .blkb 4
0004 .dbsym e lcd_data2 _lcd_data2 l
0004 _lcd_data1::
0004 .blkb 4
0008 .dbsym e lcd_data1 _lcd_data1 l
0008 _pointer::
0008 .blkb 2
000A .dbsym e pointer _pointer pc
000A _lcd_buf::
000A .blkb 10
0014 .dbsym e lcd_buf _lcd_buf A[10:10]c
.area data(ram, con, rel)
0000 .dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
0000 L33:
0000 .blkb 16
.area idata
0000 D4ACD7D4B8D53A313636393337393900 .byte 212,172,215,212,184,213,58,49,54,54,57,51,55,57,57,0
.area data(ram, con, rel)
0010 .dbfile D:\SOURCE~1\avr\avr48\smg12232zk\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -