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

📄 uart_to_twi_m8.lis

📁 AVR单片机的T_TO_TWI通讯方式
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 02E6                   .dbline -2
 02E6           L69:
 02E6                   .dbline 0 ; func end
 02E6 0895              ret
 02E8                   .dbend
 02E8                   .dbfunc e init_devices _init_devices fV
                        .even
 02E8           _init_devices::
 02E8                   .dbline -1
 02E8                   .dbline 294
 02E8           ; }
 02E8           ; //call this routine to initialize all peripherals
 02E8           ; void init_devices(void)
 02E8           ; {
 02E8                   .dbline 296
 02E8           ;  //stop errant interrupts until set up
 02E8           ;  CLI(); //disable all interrupts
 02E8 F894              cli
 02EA                   .dbline 297
 02EA           ;  port_init();
 02EA F3DF              rcall _port_init
 02EC                   .dbline 298
 02EC           ;  uart0_init();
 02EC 00D0              rcall _uart0_init
 02EE                   .dbline 299
 02EE           ;  twi_init();
 02EE 00D0              rcall _twi_init
 02F0                   .dbline 300
 02F0           ;  timer0_init();
 02F0 0DD0              rcall _timer0_init
 02F2                   .dbline 301
 02F2           ;  watchdog_init();
 02F2 08D0              rcall _watchdog_init
 02F4                   .dbline 303
 02F4           ; 
 02F4           ;  MCUCR = 0x00;
 02F4 2224              clr R2
 02F6 25BE              out 0x35,R2
 02F8                   .dbline 304
 02F8           ;  GICR  = 0x00;
 02F8 2BBE              out 0x3b,R2
 02FA                   .dbline 305
 02FA           ;  TIMSK = 0x00; //timer interrupt sources
 02FA 29BE              out 0x39,R2
 02FC                   .dbline 306
 02FC           ;  SEI(); //re-enable interrupts
 02FC 7894              sei
 02FE                   .dbline -2
 02FE           L70:
 02FE                   .dbline 0 ; func end
 02FE 0895              ret
 0300                   .dbend
 0300                   .dbfunc e check_watchdog _check_watchdog fV
                        .even
 0300           _check_watchdog::
 0300                   .dbline -1
 0300                   .dbline 310
 0300           ;  //all peripherals are now initialized
 0300           ; }
 0300           ; void check_watchdog(void)
 0300           ; {
 0300                   .dbline 311
 0300           ;       WDR();//喂狗
 0300 A895              wdr
 0302                   .dbline -2
 0302           L71:
 0302                   .dbline 0 ; func end
 0302 0895              ret
 0304                   .dbend
 0304                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 0304           _watchdog_init::
 0304                   .dbline -1
 0304                   .dbline 314
 0304           ; }
 0304           ; void watchdog_init(void)
 0304           ; {
 0304                   .dbline 315
 0304           ;  WDR();//看门狗计数清零
 0304 A895              wdr
 0306                   .dbline 316
 0306           ;  WDTCR=((1<<WDE)|(1<<WDP2)|(1<<WDP0));//64K分频,0.52S
 0306 8DE0              ldi R24,13
 0308 81BD              out 0x21,R24
 030A                   .dbline -2
 030A           L72:
 030A                   .dbline 0 ; func end
 030A 0895              ret
 030C                   .dbend
 030C                   .dbfunc e timer0_init _timer0_init fV
                        .even
 030C           _timer0_init::
 030C                   .dbline -1
 030C                   .dbline 324
 030C           ;  //WDIE是看门狗中断使能,WDE看门狗使能 101 512k
 030C           ; }
 030C           ; 
 030C           ; //TIMER0 initialize - prescale:256
 030C           ; // desired value: 100Hz
 030C           ; // actual value: 100.000Hz (0.0%)
 030C           ; void timer0_init(void)
 030C           ; {
 030C                   .dbline 325
 030C           ;  TCCR0 = 0x00; //stop
 030C 2224              clr R2
 030E 23BE              out 0x33,R2
 0310                   .dbline 326
 0310           ;  TCNT0 = 0x4C; //set count
 0310 8CE4              ldi R24,76
 0312 82BF              out 0x32,R24
 0314                   .dbline 327
 0314           ;  TCCR0 = 0x04; //start timer
 0314 84E0              ldi R24,4
 0316 83BF              out 0x33,R24
 0318                   .dbline -2
 0318           L73:
 0318                   .dbline 0 ; func end
 0318 0895              ret
 031A                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 8DC1              rjmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 031A                   .dbfile F:\UART_TO_TWI\uart_to_twi_m8.c
 031A                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 031A           _timer0_ovf_isr::
 031A 2A92              st -y,R2
 031C 8A93              st -y,R24
 031E 9A93              st -y,R25
 0320 2FB6              in R2,0x3f
 0322 2A92              st -y,R2
 0324                   .dbline -1
 0324                   .dbline 332
 0324           ; }
 0324           ; 
 0324           ; #pragma interrupt_handler timer0_ovf_isr:10
 0324           ; void timer0_ovf_isr(void)
 0324           ; {
 0324                   .dbline 333
 0324           ;     TCNT0 = 0x4C; //reload counter value
 0324 8CE4              ldi R24,76
 0326 82BF              out 0x32,R24
 0328                   .dbline 335
 0328           ;     //主灯
 0328           ;     Count_10ms++;
 0328 80910000          lds R24,_Count_10ms
 032C 8F5F              subi R24,255    ; addi 1
 032E 80930000          sts _Count_10ms,R24
 0332                   .dbline 336
 0332           ;     if((Count_10ms>0)&&(Count_10ms<5))
 0332 2224              clr R2
 0334 2816              cp R2,R24
 0336 28F4              brsh L75
 0338 8530              cpi R24,5
 033A 18F4              brsh L75
 033C                   .dbline 337
 033C           ;     {
 033C                   .dbline 338
 033C           ;        Cur_Main_Led_Status = LED_ON;
 033C 81E0              ldi R24,1
 033E 80930100          sts _Cur_Main_Led_Status,R24
 0342                   .dbline 339
 0342           ;       }
 0342           L75:
 0342                   .dbline 340
 0342 85E0              ldi R24,5
 0344 20900000          lds R2,_Count_10ms
 0348 8215              cp R24,R2
 034A 30F4              brsh L77
 034C 822D              mov R24,R2
 034E 8A30              cpi R24,10
 0350 18F4              brsh L77
 0352                   .dbline 341
 0352                   .dbline 342
 0352 2224              clr R2
 0354 20920100          sts _Cur_Main_Led_Status,R2
 0358                   .dbline 343
 0358           L77:
 0358                   .dbline -2
 0358           L74:
 0358 2990              ld R2,y+
 035A 2FBE              out 0x3f,R2
 035C 9991              ld R25,y+
 035E 8991              ld R24,y+
 0360 2990              ld R2,y+
 0362                   .dbline 0 ; func end
 0362 1895              reti
 0364                   .dbend
 0364                   .dbfunc e check_main_led _check_main_led fV
                        .even
 0364           _check_main_led::
 0364                   .dbline -1
 0364                   .dbline 346
 0364           ;     if((Count_10ms>5)&&(Count_10ms<10))
 0364           ;     {
 0364           ;       Cur_Main_Led_Status = LED_OFF;
 0364           ;     }
 0364           ; }
 0364           ; void check_main_led(void)
 0364           ; {
 0364                   .dbline 347
 0364           ;    if(Main_Led_Status != Cur_Main_Led_Status)
 0364 20900100          lds R2,_Cur_Main_Led_Status
 0368 30900200          lds R3,_Main_Led_Status
 036C 3214              cp R3,R2
 036E 51F0              breq L80
 0370                   .dbline 348
 0370           ;    {
 0370                   .dbline 349
 0370           ;         if(Main_Led_Status == LED_ON)            Main_Led_Off();
 0370 832D              mov R24,R3
 0372 8130              cpi R24,1
 0374 11F4              brne L82
 0376                   .dbline 349
 0376 939A              sbi 0x12,3
 0378 01C0              rjmp L83
 037A           L82:
 037A                   .dbline 350
 037A           ;         else                                             Main_Led_On();
 037A 9398              cbi 0x12,3
 037C           L83:
 037C                   .dbline 351
 037C 20900100          lds R2,_Cur_Main_Led_Status
 0380 20920200          sts _Main_Led_Status,R2
 0384                   .dbline 352
 0384           L80:
 0384                   .dbline -2
 0384           L79:
 0384                   .dbline 0 ; func end
 0384 0895              ret
 0386                   .dbend
 0386                   .dbfunc e check_slave_led _check_slave_led fV
                        .even
 0386           _check_slave_led::
 0386                   .dbline -1
 0386                   .dbline 355
 0386           ;         Main_Led_Status = Cur_Main_Led_Status;
 0386           ;    }
 0386           ; }
 0386           ; void check_slave_led(void)
 0386           ; {
 0386                   .dbline 356
 0386           ;     if(Slave_Led_Status == LED_ON) 
 0386 80910300          lds R24,_Slave_Led_Status
 038A 8130              cpi R24,1
 038C 11F4              brne L85
 038E                   .dbline 357
 038E           ;     {
 038E                   .dbline 358
 038E           ;       Slave_Led_On();
 038E 9298              cbi 0x12,2
 0390                   .dbline 359
 0390           ;       }
 0390 01C0              rjmp L86
 0392           L85:
 0392                   .dbline 361
 0392                   .dbline 362
 0392 929A              sbi 0x12,2
 0394                   .dbline 363
 0394           L86:
 0394                   .dbline -2
 0394           L84:
 0394                   .dbline 0 ; func end
 0394 0895              ret
 0396                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\UART_TO_TWI\uart_to_twi_m8.c
 0000           _Count_10ms::
 0000                   .blkb 1
 0001                   .dbsym e Count_10ms _Count_10ms c
 0001           _Cur_Main_Led_Status::
 0001                   .blkb 1
 0002                   .dbsym e Cur_Main_Led_Status _Cur_Main_Led_Status c
 0002           _Main_Led_Status::
 0002                   .blkb 1
 0003                   .dbsym e Main_Led_Status _Main_Led_Status c
 0003           _Slave_Led_Status::
 0003                   .blkb 1
 0004                   .dbsym e Slave_Led_Status _Slave_Led_Status c
 0004           _Twi_Hex_Data_Flag::
 0004                   .blkb 1
 0005                   .dbsym e Twi_Hex_Data_Flag _Twi_Hex_Data_Flag c
 0005           _Twi_ASCI_Data_Flag::
 0005                   .blkb 1
 0006                   .dbsym e Twi_ASCI_Data_Flag _Twi_ASCI_Data_Flag c
 0006           _Twi_Read_Flag::
 0006                   .blkb 1
 0007                   .dbsym e Twi_Read_Flag _Twi_Read_Flag c
 0007           _Twi_Write_Flag::
 0007                   .blkb 1
 0008                   .dbsym e Twi_Write_Flag _Twi_Write_Flag c
 0008           _Twi_ASCI_Data::
 0008                   .blkb 6
 000E                   .dbsym e Twi_ASCI_Data _Twi_ASCI_Data A[6:6]c
 000E           _Twi_Hex_Data::
 000E                   .blkb 3
 0011                   .dbsym e Twi_Hex_Data _Twi_Hex_Data A[3:3]c
                        .area data(ram, con, rel)
 0000                   .dbfile F:\UART_TO_TWI\uart_to_twi_m8.c
 0000           L2:
 0000                   .blkb 9
                        .area idata
 0000 7265616420676F2100        .byte 'r,'e,'a,'d,32,'g,'o,33,0
                        .area data(ram, con, rel)
 0009                   .dbfile F:\UART_TO_TWI\uart_to_twi_m8.c

⌨️ 快捷键说明

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