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

📄 ac15-4.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00E2                   .dbline -1
 00E2                   .dbline 114
 00E2           ; }
 00E2           ; 
 00E2           ; //********************写命令到LCM子函数********************
 00E2           ; void LcdWriteCommand(uchar CMD,uchar Attribc)
 00E2           ; {
 00E2                   .dbline 115
 00E2           ; if(Attribc)WaitForEnable();
 00E2 6623              tst R22
 00E4 09F0              breq L17
 00E6                   .dbline 115
 00E6 1CD0              xcall _WaitForEnable
 00E8           L17:
 00E8                   .dbline 116
 00E8           ; LCM_RS_0;LCM_RW_0;_NOP();
 00E8 C098              cbi 0x18,0
 00EA                   .dbline 116
 00EA C198              cbi 0x18,1
 00EC                   .dbline 116
 00EC 0000              nop
 00EE                   .dbline 117
 00EE           ; DataPort=CMD;_NOP();
 00EE 4BBB              out 0x1b,R20
 00F0                   .dbline 117
 00F0 0000              nop
 00F2                   .dbline 118
 00F2           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 00F2 C29A              sbi 0x18,2
 00F4                   .dbline 118
 00F4 0000              nop
 00F6                   .dbline 118
 00F6 0000              nop
 00F8                   .dbline 118
 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 123
 0106           ; }
 0106           ; 
 0106           ; //*******************写数据到LCM子函数********************
 0106           ; void LcdWriteData(uchar dataW)
 0106           ; {
 0106                   .dbline 124
 0106           ; WaitForEnable();
 0106 0CD0              xcall _WaitForEnable
 0108                   .dbline 125
 0108           ; LCM_RS_1;LCM_RW_0;_NOP();
 0108 C09A              sbi 0x18,0
 010A                   .dbline 125
 010A C198              cbi 0x18,1
 010C                   .dbline 125
 010C 0000              nop
 010E                   .dbline 126
 010E           ; DataPort=dataW;_NOP();
 010E 4BBB              out 0x1b,R20
 0110                   .dbline 126
 0110 0000              nop
 0112                   .dbline 127
 0112           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 0112 C29A              sbi 0x18,2
 0114                   .dbline 127
 0114 0000              nop
 0116                   .dbline 127
 0116 0000              nop
 0118                   .dbline 127
 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 132
 0120           ; }
 0120           ; 
 0120           ; //*******************检测LCD忙信号子函数*********************
 0120           ; void WaitForEnable(void)
 0120           ; {
 0120                   .dbline 134
 0120           ; uchar val;
 0120           ; DataPort=0xff;
 0120 8FEF              ldi R24,255
 0122 8BBB              out 0x1b,R24
 0124                   .dbline 135
 0124           ; LCM_RS_0;LCM_RW_1;_NOP();
 0124 C098              cbi 0x18,0
 0126                   .dbline 135
 0126 C19A              sbi 0x18,1
 0128                   .dbline 135
 0128 0000              nop
 012A                   .dbline 136
 012A           ; LCM_EN_1;_NOP();_NOP();
 012A C29A              sbi 0x18,2
 012C                   .dbline 136
 012C 0000              nop
 012E                   .dbline 136
 012E 0000              nop
 0130                   .dbline 137
 0130           ; DDRA=0x00;
 0130 2224              clr R2
 0132 2ABA              out 0x1a,R2
 0134                   .dbline 138
 0134           ; val=PINA;
 0134 09B3              in R16,0x19
 0136 01C0              xjmp L22
 0138           L21:
 0138                   .dbline 139
 0138 09B3              in R16,0x19
 013A           L22:
 013A                   .dbline 139
 013A           ; while(val&Busy)val=PINA;
 013A 07FD              sbrc R16,7
 013C FDCF              rjmp L21
 013E                   .dbline 140
 013E           ; LCM_EN_0;
 013E C298              cbi 0x18,2
 0140                   .dbline 141
 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 155
 0146           ; }
 0146           ; 
 0146           ; /******************定义结构体变量time1,time2********************/
 0146           ; struct date
 0146           ; {
 0146           ; uchar hour;
 0146           ; uchar min;
 0146           ; uchar sec;
 0146           ; uchar dida;
 0146           ; }time1,time2;
 0146           ; 
 0146           ; /******************端口初始化**********************/
 0146           ; void port_init(void)
 0146           ; {
 0146                   .dbline 156
 0146           ;  PORTA = 0x00;
 0146 2224              clr R2
 0148 2BBA              out 0x1b,R2
 014A                   .dbline 157
 014A           ;  DDRA  = 0xFF;
 014A 8FEF              ldi R24,255
 014C 8ABB              out 0x1a,R24
 014E                   .dbline 158
 014E           ;  PORTB = 0x00;
 014E 28BA              out 0x18,R2
 0150                   .dbline 159
 0150           ;  DDRB  = 0xFF;
 0150 87BB              out 0x17,R24
 0152                   .dbline 160
 0152           ;  PORTC = 0x00; 
 0152 25BA              out 0x15,R2
 0154                   .dbline 161
 0154           ;  DDRC  = 0x03;
 0154 83E0              ldi R24,3
 0156 84BB              out 0x14,R24
 0158                   .dbline 162
 0158           ;  PORTD = 0xFF;
 0158 8FEF              ldi R24,255
 015A 82BB              out 0x12,R24
 015C                   .dbline 163
 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 168
 0160           ; }
 0160           ; 
 0160           ; /*****************扫描按键*****************/
 0160           ; uchar scan_key(void)          
 0160           ; {                                     
 0160                   .dbline 170
 0160           ; uchar temp;                   
 0160           ; temp=PIND;                            
 0160 00B3              in R16,0x10
 0162                   .dbline 171
 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 179
 0168           ; }                                     
 0168           ; 
 0168           ; /******************************************
 0168           ;                I2C总线读一个字节
 0168           ;                          如果读失败返回0
 0168           ; *******************************************/
 0168           ; unsigned char i2c_Read(unsigned char RomAddress) 
 0168           ;       {
 0168                   .dbline 181
 0168           ;          unsigned char temp;
 0168           ;          Start();
 0168 84EA              ldi R24,164
 016A 86BF              out 0x36,R24
 016C                   .dbline 182
 016C           L27:
 016C                   .dbline 182
 016C           L28:
 016C                   .dbline 182
 016C           ;          Wait();
 016C 26B6              in R2,0x36
 016E 27FE              sbrs R2,7
 0170 FDCF              rjmp L27
 0172                   .dbline 182
 0172                   .dbline 182
 0172                   .dbline 183
 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 183
 017A 0027              clr R16
 017C 40C0              xjmp L26
 017E           L30:
 017E                   .dbline 184
 017E           ;          Write8Bit(wr_device_add);
 017E                   .dbline 184
 017E 80EA              ldi R24,160
 0180 83B9              out 0x3,R24
 0182                   .dbline 184
 0182 84E8              ldi R24,132
 0184 86BF              out 0x36,R24
 0186                   .dbline 184
 0186                   .dbline 184
 0186                   .dbline 185
 0186           L32:
 0186                   .dbline 185
 0186           L33:
 0186                   .dbline 185
 0186           ;          Wait(); 
 0186 26B6              in R2,0x36
 0188 27FE              sbrs R2,7
 018A FDCF              rjmp L32
 018C                   .dbline 185
 018C                   .dbline 185
 018C                   .dbline 186
 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 186
 0194 0027              clr R16
 0196 33C0              xjmp L26
 0198           L35:
 0198                   .dbline 187
 0198           ;          Write8Bit(RomAddress);
 0198                   .dbline 187
 0198 03B9              out 0x3,R16
 019A                   .dbline 187
 019A 84E8              ldi R24,132
 019C 86BF              out 0x36,R24
 019E                   .dbline 187
 019E                   .dbline 187
 019E                   .dbline 188
 019E           L37:
 019E                   .dbline 188
 019E           L38:
 019E                   .dbline 188
 019E           ;          Wait();
 019E 26B6              in R2,0x36
 01A0 27FE              sbrs R2,7
 01A2 FDCF              rjmp L37
 01A4                   .dbline 188
 01A4                   .dbline 188
 01A4                   .dbline 189
 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 189
 01AC 0027              clr R16
 01AE 27C0              xjmp L26
 01B0           L40:
 01B0                   .dbline 190
 01B0           ;          Start();
 01B0 84EA              ldi R24,164
 01B2 86BF              out 0x36,R24
 01B4                   .dbline 191
 01B4           L42:
 01B4                   .dbline 191
 01B4           L43:
 01B4                   .dbline 191
 01B4           ;          Wait();

⌨️ 快捷键说明

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