📄 uart_main.lis
字号:
.area text(rom, con, rel)
012C .dbfile D:\ICCTES~1\1128\uart_main.c
012C .dbfunc e uart0_udre_isr _uart0_udre_isr fV
.even
012C _uart0_udre_isr::
012C 2A92 st -y,R2
012E 3A92 st -y,R3
0130 8A93 st -y,R24
0132 9A93 st -y,R25
0134 EA93 st -y,R30
0136 FA93 st -y,R31
0138 2FB6 in R2,0x3f
013A 2A92 st -y,R2
013C .dbline -1
013C .dbline 92
013C ; } //void uart0_rx_isr(void)
013C ;
013C ;
013C ; #pragma interrupt_handler uart0_udre_isr:21
013C ; void uart0_udre_isr(void)
013C ; {
013C .dbline 95
013C ; //character transferred to shift register so UDR is now empty
013C ; // UDR0 = 0x01;
013C ; if(sendPosi<sendCount)
013C 20900000 lds R2,_sendCount
0140 30900000 lds R3,_sendPosi
0144 3214 cp R3,R2
0146 80F4 brsh L20
0148 .dbline 96
0148 ; {
0148 .dbline 97
0148 ; sendPosi++;
0148 80910000 lds R24,_sendPosi
014C 8F5F subi R24,255 ; addi 1
014E 80930000 sts _sendPosi,R24
0152 .dbline 99
0152 ; // TX9D = ParityBit(sendBuf[sendPosi]);
0152 ; UDR0 = sendBuf[sendPosi];
0152 80E0 ldi R24,<_sendBuf
0154 90E0 ldi R25,>_sendBuf
0156 E0910000 lds R30,_sendPosi
015A FF27 clr R31
015C E80F add R30,R24
015E F91F adc R31,R25
0160 2080 ldd R2,z+0
0162 2092C600 sts 198,R2
0166 .dbline 100
0166 ; }
0166 15C0 rjmp L21
0168 L20:
0168 .dbline 102
0168 ; else
0168 ; {
0168 .dbline 104
0168 ; // receEnable(); //485芯片
0168 ; if(UCSR0A&BIT(TXC0) != 0) //if(TRMT)
0168 2090C000 lds R2,192
016C 20FE sbrs R2,0
016E 11C0 rjmp L22
0170 .dbline 105
0170 ; {
0170 .dbline 106
0170 ; receCount = 0;
0170 2224 clr R2
0172 20920000 sts _receCount,R2
0176 .dbline 107
0176 ; checkoutError = 0;
0176 20920000 sts _checkoutError,R2
017A .dbline 110
017A ; //--------------------------
017A ; //UCSR0B &= ~BIT(UDRIE0); //RXCIE0 清零. TXIE = 0;//在一组数据发送完成后关闭
017A ; UCSR0B &= ~BIT(TXCIE0);
017A 8091C100 lds R24,193
017E 8F7B andi R24,191
0180 8093C100 sts 193,R24
0184 .dbline 112
0184 ; //TXEN = 0;
0184 ; UCSR0B &= ~BIT(TXEN0);
0184 8091C100 lds R24,193
0188 877F andi R24,247
018A 8093C100 sts 193,R24
018E .dbline 113
018E ; sendCount = 0;
018E 20920000 sts _sendCount,R2
0192 .dbline 116
0192 ; //--------------------------
0192 ; // flag_bit = 0; //&&&&&&&&
0192 ; }
0192 L22:
0192 .dbline 117
0192 L21:
0192 .dbline -2
0192 L19:
0192 2990 ld R2,y+
0194 2FBE out 0x3f,R2
0196 F991 ld R31,y+
0198 E991 ld R30,y+
019A 9991 ld R25,y+
019C 8991 ld R24,y+
019E 3990 ld R3,y+
01A0 2990 ld R2,y+
01A2 .dbline 0 ; func end
01A2 1895 reti
01A4 .dbend
01A4 .dbfunc e test_pin _test_pin fV
.even
01A4 _test_pin::
01A4 .dbline -1
01A4 .dbline 121
01A4 ; }
01A4 ; }
01A4 ;
01A4 ; void test_pin(void)
01A4 ; {
01A4 .dbline 122
01A4 ; DDRC |= 0x02;
01A4 399A sbi 0x7,1
01A6 .dbline 123
01A6 ; PORTC |= 0x02;
01A6 419A sbi 0x8,1
01A8 .dbline -2
01A8 L24:
01A8 .dbline 0 ; func end
01A8 0895 ret
01AA .dbend
01AA .dbfunc e init_devices _init_devices fV
.even
01AA _init_devices::
01AA .dbline -1
01AA .dbline 128
01AA ; }
01AA ;
01AA ; //call this routine to initialize all peripherals
01AA ; void init_devices(void)
01AA ; {
01AA .dbline 130
01AA ; //stop errant interrupts until set up
01AA ; CLI(); //disable all interrupts
01AA F894 cli
01AC .dbline 131
01AC ; port_init();
01AC 4ADF rcall _port_init
01AE .dbline 132
01AE ; uart0_init();
01AE 00D0 rcall _uart0_init
01B0 .dbline 133
01B0 ; timer2_init();
01B0 00D0 rcall _timer2_init
01B2 .dbline 134
01B2 ; led_init();
01B2 00D0 rcall _led_init
01B4 .dbline 136
01B4 ;
01B4 ; test_pin();
01B4 F7DF rcall _test_pin
01B6 .dbline 138
01B6 ;
01B6 ; MCUCR = 0x00;
01B6 2224 clr R2
01B8 25BE out 0x35,R2
01BA .dbline 139
01BA ; EICRA = 0x00; //extended ext ints
01BA 20926900 sts 105,R2
01BE .dbline 140
01BE ; EIMSK = 0x00;
01BE 2DBA out 0x1d,R2
01C0 .dbline 142
01C0 ;
01C0 ; TIMSK0 = 0x00; //timer 0 interrupt sources
01C0 20926E00 sts 110,R2
01C4 .dbline 143
01C4 ; TIMSK1 = 0x00; //timer 1 interrupt sources
01C4 20926F00 sts 111,R2
01C8 .dbline 144
01C8 ; TIMSK2 = 0x01; //timer 2 interrupt sources
01C8 81E0 ldi R24,1
01CA 80937000 sts 112,R24
01CE .dbline 146
01CE ;
01CE ; PCMSK0 = 0x00; //pin change mask 0
01CE 20926B00 sts 107,R2
01D2 .dbline 147
01D2 ; PCMSK1 = 0x00; //pin change mask 1
01D2 20926C00 sts 108,R2
01D6 .dbline 148
01D6 ; PCMSK2 = 0x00; //pin change mask 2
01D6 20926D00 sts 109,R2
01DA .dbline 149
01DA ; PCICR = 0x00; //pin change enable
01DA 20926800 sts 104,R2
01DE .dbline 150
01DE ; PRR = 0x84; //power controller
01DE 84E8 ldi R24,132
01E0 80936400 sts 100,R24
01E4 .dbline 151
01E4 ; SEI(); //re-enable interrupts
01E4 7894 sei
01E6 .dbline -2
01E6 L25:
01E6 .dbline 0 ; func end
01E6 0895 ret
01E8 .dbend
01E8 .dbfunc e main _main fV
.even
01E8 _main::
01E8 .dbline -1
01E8 .dbline 157
01E8 ; //all peripherals are now initialized
01E8 ; }
01E8 ;
01E8 ; //
01E8 ; void main(void)
01E8 ; {
01E8 .dbline 158
01E8 ; NOP();
01E8 0000 nop
01EA .dbline 159
01EA ; init_devices();
01EA DFDF rcall _init_devices
01EC .dbline 160
01EC ; NOP();
01EC 0000 nop
01EE .dbline 161
01EE ; singleKeyTranmit();
01EE 00D0 rcall _singleKeyTranmit
01F0 .dbline 162
01F0 ; delay(50000);
01F0 00E5 ldi R16,50000
01F2 13EC ldi R17,195
01F4 1EDF rcall _delay
01F6 .dbline 163
01F6 ; singleKeyTranmit();
01F6 00D0 rcall _singleKeyTranmit
01F8 .dbline 164
01F8 ; test();
01F8 03DF rcall _test
01FA 1CC0 rjmp L28
01FC L27:
01FC .dbline 168
01FC ;
01FC ;
01FC ; while(1)
01FC ; {
01FC .dbline 170
01FC ;
01FC ; ReceiveFrameDisFun();
01FC 00D0 rcall _ReceiveFrameDisFun
01FE .dbline 173
01FE ;
01FE ; //UDR0 = 0x01;
01FE ; if(timeBase.bits.bt1ms)
01FE 80910000 lds R24,_timeBase
0202 8695 lsr R24
0204 8170 andi R24,1
0206 09F0 breq L30
0208 .dbline 174
0208 ; time_mission();
0208 00D0 rcall _time_mission
020A L30:
020A .dbline 175
020A ; if(ledControl.bits.once128ms) // if(var_a == 1) //
020A 80910000 lds R24,_ledControl
020E 8170 andi R24,1
0210 31F0 breq L32
0212 .dbline 176
0212 ; {
0212 .dbline 178
0212 ; //PORTC ^= 0x02;
0212 ; ledControl.bits.once128ms=0; //var_a = 0; //
0212 80910000 lds R24,_ledControl
0216 8E7F andi R24,254
0218 80930000 sts _ledControl,R24
021C .dbline 179
021C ; sub2();
021C 00D0 rcall _sub2
021E .dbline 180
021E ; }
021E L32:
021E .dbline 181
021E ; if(ledControl.bits.refurbish) //if(var_b == 1) //
021E 80910000 lds R24,_ledControl
0222 8695 lsr R24
0224 8170 andi R24,1
0226 31F0 breq L34
0228 .dbline 182
0228 ; {
0228 .dbline 184
0228 ; //PORTC ^= 0x02;
0228 ; ledControl.bits.refurbish=0;//var_b = 0; //
0228 80910000 lds R24,_ledControl
022C 8D7F andi R24,253
022E 80930000 sts _ledControl,R24
0232 .dbline 185
0232 ; subled();
0232 00D0 rcall _subled
0234 .dbline 186
0234 ; }
0234 L34:
0234 .dbline 188
0234 L28:
0234 .dbline 167
0234 E3CF rjmp L27
0236 X1:
0236 .dbline -2
0236 L26:
0236 .dbline 0 ; func end
0236 0895 ret
0238 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -