⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 m48,8兆,smg12232带16*16汉字库点阵液晶屏驱动程序,有详细注视,
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -