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

📄 main.lis

📁 ATmega128的GPS例子
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -