📄 uart_to_twi_m8.lis
字号:
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 + -