📄 main.lis
字号:
02A2 8AE0 ldi R24,10
02A4 90E0 ldi R25,0
02A6 A0E0 ldi R26,0
02A8 B0E0 ldi R27,0
02AA 098D ldd R16,y+25
02AC 1A8D ldd R17,y+26
02AE 2B8D ldd R18,y+27
02B0 3C8D ldd R19,y+28
02B2 BA93 st -y,R27
02B4 AA93 st -y,R26
02B6 9A93 st -y,R25
02B8 8A93 st -y,R24
02BA 0E940000 xcall div32u
02BE 098F std y+25,R16
02C0 1A8F std y+26,R17
02C2 2B8F std y+27,R18
02C4 3C8F std y+28,R19
02C6 .dbline 109
02C6 ; }
02C6 L69:
02C6 .dbline 105
02C6 A394 inc R10
02C8 L71:
02C8 .dbline 105
02C8 A416 cp R10,R20
02CA 40F2 brlo L68
02CC X19:
02CC .dbline 112
02CC ; //输入灭零程序
02CC ;
02CC ; if(ypos==1)
02CC 8E2D mov R24,R14
02CE 8130 cpi R24,1
02D0 21F4 brne L73
02D2 X20:
02D2 .dbline 113
02D2 ; {
02D2 .dbline 114
02D2 ; ram_address = 0x80+xpos-1;
02D2 6C2D mov R22,R12
02D4 6058 subi R22,128 ; addi 128
02D6 6150 subi R22,1
02D8 .dbline 115
02D8 ; }
02D8 06C0 xjmp L74
02DA L73:
02DA .dbline 116
02DA ; else if(ypos==2)
02DA 8E2D mov R24,R14
02DC 8230 cpi R24,2
02DE 19F4 brne L75
02E0 X21:
02E0 .dbline 117
02E0 ; {
02E0 .dbline 118
02E0 ; ram_address = 0x90+xpos-1;
02E0 6C2D mov R22,R12
02E2 6057 subi R22,112 ; addi 144
02E4 6150 subi R22,1
02E6 .dbline 119
02E6 ; }
02E6 L75:
02E6 L74:
02E6 .dbline 120
02E6 ; Lcd_Write(0xf8,ram_address);
02E6 262F mov R18,R22
02E8 08EF ldi R16,248
02EA 24D0 xcall _Lcd_Write
02EC .dbline 121
02EC ; lcd_pointer = lcd_buf;
02EC BE01 movw R22,R28
02EE .dbline 122
02EE ; for(i=0;i<num;i++)
02EE AA24 clr R10
02F0 07C0 xjmp L80
02F2 L77:
02F2 .dbline 123
02F2 ; {
02F2 .dbline 124
02F2 ; Lcd_Write(0xfa,*lcd_pointer);
02F2 FB01 movw R30,R22
02F4 2081 ldd R18,z+0
02F6 0AEF ldi R16,250
02F8 1DD0 xcall _Lcd_Write
02FA .dbline 125
02FA ; lcd_pointer++;
02FA 6F5F subi R22,255 ; offset = 1
02FC 7F4F sbci R23,255
02FE .dbline 126
02FE ; }
02FE L78:
02FE .dbline 122
02FE A394 inc R10
0300 L80:
0300 .dbline 122
0300 A416 cp R10,R20
0302 B8F3 brlo L77
0304 X22:
0304 .dbline 127
0304 ; }
0304 L66:
0304 .dbline -2
0304 L65:
0304 .dbline 0 ; func end
0304 2F96 adiw R28,15
0306 0C940000 xjmp pop_xgsetF0FC
030A .dbsym r ram_address 22 c
030A .dbsym l lcd_buf 0 A[15:15]c
030A .dbsym r lcd_pointer 22 pc
030A .dbsym r i 10 c
030A .dbsym r num 20 c
030A .dbsym l data 25 l
030A .dbsym r xpos 12 c
030A .dbsym r ypos 14 c
030A .dbend
030A .dbfunc e Lcd_Reset _Lcd_Reset fV
.even
030A _Lcd_Reset::
030A .dbline -1
030A .dbline 132
030A ; }
030A ;
030A ;
030A ; void Lcd_Reset(void)
030A ; {
030A .dbline 133
030A ; LCD_CS_H;//片选置高
030A AB9A sbi 0x15,3
030C .dbline 134
030C ; Delay_Ms(1);//等待内部复位
030C 01E0 ldi R16,1
030E 10E0 ldi R17,0
0310 10DF xcall _Delay_Ms
0312 .dbline 135
0312 ; Lcd_Write(0xf8,0x30);//使用基本指令集
0312 20E3 ldi R18,48
0314 08EF ldi R16,248
0316 0ED0 xcall _Lcd_Write
0318 .dbline 136
0318 ; Lcd_Write(0xf8,0x0c);//整体显示on
0318 2CE0 ldi R18,12
031A 08EF ldi R16,248
031C 0BD0 xcall _Lcd_Write
031E .dbline 137
031E ; Lcd_Write(0xf8,0x01);//清除显示
031E 21E0 ldi R18,1
0320 08EF ldi R16,248
0322 08D0 xcall _Lcd_Write
0324 .dbline 138
0324 ; Delay_Ms(5);//4.6ms
0324 05E0 ldi R16,5
0326 10E0 ldi R17,0
0328 04DF xcall _Delay_Ms
032A .dbline 139
032A ; Lcd_Write(0xf8,0x06);//显示右移
032A 26E0 ldi R18,6
032C 08EF ldi R16,248
032E 02D0 xcall _Lcd_Write
0330 .dbline 140
0330 ; LCD_CS_L;//片选置低
0330 AB98 cbi 0x15,3
0332 .dbline -2
0332 L81:
0332 .dbline 0 ; func end
0332 0895 ret
0334 .dbend
0334 .dbfunc e Lcd_Write _Lcd_Write fV
0334 ; com -> R10
0334 ; start -> R12
.even
0334 _Lcd_Write::
0334 AA92 st -y,R10
0336 CA92 st -y,R12
0338 A22E mov R10,R18
033A C02E mov R12,R16
033C .dbline -1
033C .dbline 144
033C ; }
033C ;
033C ; void Lcd_Write(Byte start,Byte com)//start :起始字节com:命令/数据
033C ; {
033C .dbline 145
033C ; LCD_CS_H;//片选置高
033C AB9A sbi 0x15,3
033E .dbline 146
033E ; Send_8bit(start);
033E 0C2D mov R16,R12
0340 1127 clr R17
0342 1CD0 xcall _Send_8bit
0344 .dbline 147
0344 ; Delay_Us(100);//72us
0344 04E6 ldi R16,100
0346 DFDE xcall _Delay_Us
0348 .dbline 149
0348 ; //将data变为datal 0000 datah 0000
0348 ; Send_8bit(com&0xf0);
0348 0A2D mov R16,R10
034A 1127 clr R17
034C 007F andi R16,240
034E 1070 andi R17,0
0350 15D0 xcall _Send_8bit
0352 .dbline 150
0352 ; Delay_Us(100);//72us
0352 04E6 ldi R16,100
0354 D8DE xcall _Delay_Us
0356 .dbline 151
0356 ; Send_8bit((com&0x0f)<<4);
0356 0A2D mov R16,R10
0358 1127 clr R17
035A 0F70 andi R16,15
035C 1070 andi R17,0
035E 000F lsl R16
0360 111F rol R17
0362 000F lsl R16
0364 111F rol R17
0366 000F lsl R16
0368 111F rol R17
036A 000F lsl R16
036C 111F rol R17
036E 06D0 xcall _Send_8bit
0370 .dbline 152
0370 ; Delay_Us(100);//72us
0370 04E6 ldi R16,100
0372 C9DE xcall _Delay_Us
0374 .dbline 153
0374 ; LCD_CS_L;//片选置低
0374 AB98 cbi 0x15,3
0376 .dbline -2
0376 L82:
0376 .dbline 0 ; func end
0376 C990 ld R12,y+
0378 A990 ld R10,y+
037A 0895 ret
037C .dbsym r com 10 c
037C .dbsym r start 12 c
037C .dbend
037C .dbfunc e Send_8bit _Send_8bit fV
037C ; i -> R20
037C ; x -> R10,R11
.even
037C _Send_8bit::
037C 0E940000 xcall push_xgset300C
0380 5801 movw R10,R16
0382 .dbline -1
0382 .dbline 157
0382 ; }
0382 ;
0382 ; void Send_8bit(Word x)
0382 ; {
0382 .dbline 159
0382 ; Byte i;
0382 ; for(i=0;i<8;i++)
0382 4427 clr R20
0384 0EC0 xjmp L87
0386 L84:
0386 .dbline 160
0386 ; {
0386 .dbline 161
0386 ; if(x&0x80)//数据线发送数据
0386 A7FE sbrs R10,7
0388 02C0 rjmp L88
038A X24:
038A .dbline 162
038A ; {
038A .dbline 163
038A ; LCD_STD_H;
038A C39A sbi 0x18,3
038C .dbline 164
038C ; }
038C 01C0 xjmp L89
038E L88:
038E .dbline 166
038E ; else
038E ; {
038E .dbline 167
038E ; LCD_STD_L;
038E C398 cbi 0x18,3
0390 .dbline 168
0390 ; }
0390 L89:
0390 .dbline 169
0390 ; LCD_SCLK_L;//产生同步时钟
0390 C498 cbi 0x18,4
0392 .dbline 170
0392 ; Delay_Us(2);
0392 02E0 ldi R16,2
0394 B8DE xcall _Delay_Us
0396 .dbline 171
0396 ; LCD_SCLK_H;
0396 C49A sbi 0x18,4
0398 .dbline 172
0398 ; Delay_Us(2);
0398 02E0 ldi R16,2
039A B5DE xcall _Delay_Us
039C .dbline 173
039C ; x <<= 1;
039C AA0C lsl R10
039E BB1C rol R11
03A0 .dbline 174
03A0 ; }
03A0 L85:
03A0 .dbline 159
03A0 4395 inc R20
03A2 L87:
03A2 .dbline 159
03A2 4830 cpi R20,8
03A4 80F3 brlo L84
03A6 X25:
03A6 .dbline -2
03A6 L83:
03A6 .dbline 0 ; func end
03A6 0C940000 xjmp pop_xgset300C
03AA .dbsym r i 20 c
03AA .dbsym r x 10 i
03AA .dbend
03AA .dbfunc e Hzk_Dis_Clr _Hzk_Dis_Clr fV
.even
03AA _Hzk_Dis_Clr::
03AA 2297 sbiw R28,2
03AC .dbline -1
03AC .dbline 178
03AC ; }
03AC ;
03AC ; void Hzk_Dis_Clr(void)//汉字显示清屏
03AC ; {
03AC .dbline 179
03AC ; Hzk_Dis_Words(1,1," ");
03AC 80E0 ldi R24,<L91
03AE 90E0 ldi R25,>L91
03B0 9983 std y+1,R25
03B2 8883 std y+0,R24
03B4 21E0 ldi R18,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -