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

📄 ac15-3.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00DA           ;            CMD -> R20
                        .even
 00DA           _LcdWriteCommand::
 00DA 0E940000          xcall push_gset2
 00DE 622F              mov R22,R18
 00E0 402F              mov R20,R16
 00E2                   .dbline -1
 00E2                   .dbline 111
 00E2           ; }
 00E2           ; 
 00E2           ; //********************写命令到LCM子函数********************
 00E2           ; void LcdWriteCommand(uchar CMD,uchar Attribc)
 00E2           ; {
 00E2                   .dbline 112
 00E2           ; if(Attribc)WaitForEnable();
 00E2 6623              tst R22
 00E4 09F0              breq L17
 00E6                   .dbline 112
 00E6 1CD0              xcall _WaitForEnable
 00E8           L17:
 00E8                   .dbline 113
 00E8           ; LCM_RS_0;LCM_RW_0;_NOP();
 00E8 C098              cbi 0x18,0
 00EA                   .dbline 113
 00EA C198              cbi 0x18,1
 00EC                   .dbline 113
 00EC 0000              nop
 00EE                   .dbline 114
 00EE           ; DataPort=CMD;_NOP();
 00EE 4BBB              out 0x1b,R20
 00F0                   .dbline 114
 00F0 0000              nop
 00F2                   .dbline 115
 00F2           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 00F2 C29A              sbi 0x18,2
 00F4                   .dbline 115
 00F4 0000              nop
 00F6                   .dbline 115
 00F6 0000              nop
 00F8                   .dbline 115
 00F8 C298              cbi 0x18,2
 00FA                   .dbline -2
 00FA           L16:
 00FA 0E940000          xcall pop_gset2
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym r Attribc 22 c
 0100                   .dbsym r CMD 20 c
 0100                   .dbend
 0100                   .dbfunc e LcdWriteData _LcdWriteData fV
 0100           ;          dataW -> R20
                        .even
 0100           _LcdWriteData::
 0100 0E940000          xcall push_gset1
 0104 402F              mov R20,R16
 0106                   .dbline -1
 0106                   .dbline 120
 0106           ; }
 0106           ; 
 0106           ; //*******************写数据到LCM子函数********************
 0106           ; void LcdWriteData(uchar dataW)
 0106           ; {
 0106                   .dbline 121
 0106           ; WaitForEnable();
 0106 0CD0              xcall _WaitForEnable
 0108                   .dbline 122
 0108           ; LCM_RS_1;LCM_RW_0;_NOP();
 0108 C09A              sbi 0x18,0
 010A                   .dbline 122
 010A C198              cbi 0x18,1
 010C                   .dbline 122
 010C 0000              nop
 010E                   .dbline 123
 010E           ; DataPort=dataW;_NOP();
 010E 4BBB              out 0x1b,R20
 0110                   .dbline 123
 0110 0000              nop
 0112                   .dbline 124
 0112           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 0112 C29A              sbi 0x18,2
 0114                   .dbline 124
 0114 0000              nop
 0116                   .dbline 124
 0116 0000              nop
 0118                   .dbline 124
 0118 C298              cbi 0x18,2
 011A                   .dbline -2
 011A           L19:
 011A 0E940000          xcall pop_gset1
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbsym r dataW 20 c
 0120                   .dbend
 0120                   .dbfunc e WaitForEnable _WaitForEnable fV
 0120           ;            val -> R16
                        .even
 0120           _WaitForEnable::
 0120                   .dbline -1
 0120                   .dbline 129
 0120           ; }
 0120           ; 
 0120           ; //*******************检测LCD忙信号子函数*********************
 0120           ; void WaitForEnable(void)
 0120           ; {
 0120                   .dbline 131
 0120           ; uchar val;
 0120           ; DataPort=0xff;
 0120 8FEF              ldi R24,255
 0122 8BBB              out 0x1b,R24
 0124                   .dbline 132
 0124           ; LCM_RS_0;LCM_RW_1;_NOP();
 0124 C098              cbi 0x18,0
 0126                   .dbline 132
 0126 C19A              sbi 0x18,1
 0128                   .dbline 132
 0128 0000              nop
 012A                   .dbline 133
 012A           ; LCM_EN_1;_NOP();_NOP();
 012A C29A              sbi 0x18,2
 012C                   .dbline 133
 012C 0000              nop
 012E                   .dbline 133
 012E 0000              nop
 0130                   .dbline 134
 0130           ; DDRA=0x00;
 0130 2224              clr R2
 0132 2ABA              out 0x1a,R2
 0134                   .dbline 135
 0134           ; val=PINA;
 0134 09B3              in R16,0x19
 0136 01C0              xjmp L22
 0138           L21:
 0138                   .dbline 136
 0138 09B3              in R16,0x19
 013A           L22:
 013A                   .dbline 136
 013A           ; while(val&Busy)val=PINA;
 013A 07FD              sbrc R16,7
 013C FDCF              rjmp L21
 013E                   .dbline 137
 013E           ; LCM_EN_0;
 013E C298              cbi 0x18,2
 0140                   .dbline 138
 0140           ; DDRA=0xff;
 0140 8FEF              ldi R24,255
 0142 8ABB              out 0x1a,R24
 0144                   .dbline -2
 0144           L20:
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbsym r val 16 c
 0146                   .dbend
 0146                   .dbfunc e port_init _port_init fV
                        .even
 0146           _port_init::
 0146                   .dbline -1
 0146                   .dbline 143
 0146           ; }
 0146           ; 
 0146           ; /********************端口初始化******************/
 0146           ; void port_init(void)
 0146           ; {
 0146                   .dbline 144
 0146           ;  PORTA = 0x00;
 0146 2224              clr R2
 0148 2BBA              out 0x1b,R2
 014A                   .dbline 145
 014A           ;  DDRA  = 0xFF;
 014A 8FEF              ldi R24,255
 014C 8ABB              out 0x1a,R24
 014E                   .dbline 146
 014E           ;  PORTB = 0x00;
 014E 28BA              out 0x18,R2
 0150                   .dbline 147
 0150           ;  DDRB  = 0xFF;
 0150 87BB              out 0x17,R24
 0152                   .dbline 148
 0152           ;  PORTC = 0x00; 
 0152 25BA              out 0x15,R2
 0154                   .dbline 149
 0154           ;  DDRC  = 0x03;
 0154 83E0              ldi R24,3
 0156 84BB              out 0x14,R24
 0158                   .dbline 150
 0158           ;  PORTD = 0xFF;
 0158 8FEF              ldi R24,255
 015A 82BB              out 0x12,R24
 015C                   .dbline 151
 015C           ;  DDRD  = 0x00;
 015C 21BA              out 0x11,R2
 015E                   .dbline -2
 015E           L24:
 015E                   .dbline 0 ; func end
 015E 0895              ret
 0160                   .dbend
 0160                   .dbfunc e scan_key _scan_key fc
 0160           ;           temp -> R16
                        .even
 0160           _scan_key::
 0160                   .dbline -1
 0160                   .dbline 156
 0160           ; }
 0160           ; 
 0160           ; /*******************扫描按键******************/
 0160           ; uchar scan_key(void)          
 0160           ; {                                     
 0160                   .dbline 158
 0160           ; uchar temp;                   
 0160           ; temp=PIND;                            
 0160 00B3              in R16,0x10
 0162                   .dbline 159
 0162           ; return temp;                  
 0162                   .dbline -2
 0162           L25:
 0162                   .dbline 0 ; func end
 0162 0895              ret
 0164                   .dbsym r temp 16 c
 0164                   .dbend
 0164                   .dbfunc e i2c_Read _i2c_Read fc
 0164           ;           temp -> R20
 0164           ;     RomAddress -> R16
                        .even
 0164           _i2c_Read::
 0164 0E940000          xcall push_gset1
 0168                   .dbline -1
 0168                   .dbline 167
 0168           ; }                                     
 0168           ; 
 0168           ; /******************************************
 0168           ;                I2C总线读一个字节
 0168           ;                          如果读失败返回0
 0168           ; *******************************************/
 0168           ; unsigned char i2c_Read(unsigned char RomAddress) 
 0168           ;       {
 0168                   .dbline 169
 0168           ;          unsigned char temp;
 0168           ;          Start();
 0168 84EA              ldi R24,164
 016A 86BF              out 0x36,R24
 016C                   .dbline 170
 016C           L27:
 016C                   .dbline 170
 016C           L28:
 016C                   .dbline 170
 016C           ;          Wait();
 016C 26B6              in R2,0x36
 016E 27FE              sbrs R2,7
 0170 FDCF              rjmp L27
 0172                   .dbline 170
 0172                   .dbline 170
 0172                   .dbline 171
 0172           ;          if (TestAck()!=START) return 0;         
 0172 81B1              in R24,0x1
 0174 887F              andi R24,248
 0176 8830              cpi R24,8
 0178 11F0              breq L30
 017A                   .dbline 171
 017A 0027              clr R16
 017C 40C0              xjmp L26
 017E           L30:
 017E                   .dbline 172
 017E           ;          Write8Bit(wr_device_add);
 017E                   .dbline 172
 017E 80EA              ldi R24,160
 0180 83B9              out 0x3,R24
 0182                   .dbline 172
 0182 84E8              ldi R24,132
 0184 86BF              out 0x36,R24
 0186                   .dbline 172
 0186                   .dbline 172
 0186                   .dbline 173
 0186           L32:
 0186                   .dbline 173
 0186           L33:
 0186                   .dbline 173
 0186           ;          Wait(); 
 0186 26B6              in R2,0x36
 0188 27FE              sbrs R2,7
 018A FDCF              rjmp L32
 018C                   .dbline 173
 018C                   .dbline 173
 018C                   .dbline 174
 018C           ;          if (TestAck()!=MT_SLA_ACK) return 0;
 018C 81B1              in R24,0x1
 018E 887F              andi R24,248
 0190 8831              cpi R24,24
 0192 11F0              breq L35
 0194                   .dbline 174
 0194 0027              clr R16
 0196 33C0              xjmp L26
 0198           L35:
 0198                   .dbline 175
 0198           ;          Write8Bit(RomAddress);
 0198                   .dbline 175
 0198 03B9              out 0x3,R16
 019A                   .dbline 175
 019A 84E8              ldi R24,132
 019C 86BF              out 0x36,R24
 019E                   .dbline 175
 019E                   .dbline 175
 019E                   .dbline 176
 019E           L37:
 019E                   .dbline 176
 019E           L38:
 019E                   .dbline 176
 019E           ;          Wait();
 019E 26B6              in R2,0x36
 01A0 27FE              sbrs R2,7
 01A2 FDCF              rjmp L37
 01A4                   .dbline 176
 01A4                   .dbline 176
 01A4                   .dbline 177
 01A4           ;          if (TestAck()!=MT_DATA_ACK) return 0;
 01A4 81B1              in R24,0x1
 01A6 887F              andi R24,248
 01A8 8832              cpi R24,40
 01AA 11F0              breq L40
 01AC                   .dbline 177
 01AC 0027              clr R16
 01AE 27C0              xjmp L26
 01B0           L40:
 01B0                   .dbline 178
 01B0           ;          Start();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -