📄 main.lis
字号:
00A4 ;
00A4 ;
00A4 ; SysP5msTimer++;
00A4 80910100 lds R24,_SysP5msTimer
00A8 8F5F subi R24,255 ; addi 1
00AA 80930100 sts _SysP5msTimer,R24
00AE .dbline 83
00AE ;
00AE ; if(SysP5msTimer==10)
00AE 8A30 cpi R24,10
00B0 29F4 brne L14
00B2 X2:
00B2 .dbline 84
00B2 ; {
00B2 .dbline 85
00B2 ; SysP5msTimer=0;
00B2 2224 clr R2
00B4 20920100 sts _SysP5msTimer,R2
00B8 .dbline 86
00B8 ; TaskState[SYS_TIMER_TASK]=TASK_READY; //SYS_TIMER_TASK为2
00B8 20920D00 sts _TaskState+2,R2
00BC .dbline 88
00BC ;
00BC ; }
00BC L14:
00BC .dbline 89
00BC ; TCNT0 = 0x83; //reload counter value
00BC 83E8 ldi R24,131
00BE 82BF out 0x32,R24
00C0 .dbline -2
00C0 L9:
00C0 .dbline 0 ; func end
00C0 2990 ld R2,y+
00C2 2FBE OUT 63,R2
00C4 F991 ld R31,y+
00C6 E991 ld R30,y+
00C8 9991 ld R25,y+
00CA 8991 ld R24,y+
00CC 1991 ld R17,y+
00CE 0991 ld R16,y+
00D0 2990 ld R2,y+
00D2 1895 reti
00D4 .dbend
.area vector(rom, abs)
.org 32
0020 0C946A00 jmp _timer1_ovf_isr
.area text(rom, con, rel)
00D4 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\main.c
00D4 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
00D4 _timer1_ovf_isr::
00D4 2A92 st -y,R2
00D6 3A92 st -y,R3
00D8 2FB6 IN R2,63
00DA 2A92 st -y,R2
00DC .dbline -1
00DC .dbline 96
00DC ;
00DC ; }
00DC ;
00DC ;
00DC ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
00DC ; void timer1_ovf_isr(void)
00DC ; {
00DC .dbline 98
00DC ; //TIMER1 has overflowed
00DC ; OCR1B=CurrentOut;
00DC 20900F00 lds R2,_CurrentOut
00E0 30901000 lds R3,_CurrentOut+1
00E4 39BC out 0x29,R3
00E6 28BC out 0x28,R2
00E8 .dbline -2
00E8 L17:
00E8 .dbline 0 ; func end
00E8 2990 ld R2,y+
00EA 2FBE OUT 63,R2
00EC 3990 ld R3,y+
00EE 2990 ld R2,y+
00F0 1895 reti
00F2 .dbend
00F2 .dbfunc e timer1_init _timer1_init fV
.even
00F2 _timer1_init::
00F2 .dbline -1
00F2 .dbline 106
00F2 ; }
00F2 ;
00F2 ; //TIMER1 initialize - prescale:1
00F2 ; // WGM: 14) PWM fast, TOP=ICRn
00F2 ; // desired value: 8.192mSec
00F2 ; // actual value: 8.192mSec (0.0%)
00F2 ; void timer1_init(void)
00F2 ; {
00F2 .dbline 107
00F2 ; TCCR1B = 0x00; //stop
00F2 2224 clr R2
00F4 2EBC out 0x2e,R2
00F6 .dbline 108
00F6 ; TCNT1H = 0x00; //setup
00F6 2DBC out 0x2d,R2
00F8 .dbline 109
00F8 ; TCNT1L = 0x01;
00F8 81E0 ldi R24,1
00FA 8CBD out 0x2c,R24
00FC .dbline 110
00FC ; OCR1AH = 0xFF;
00FC 8FEF ldi R24,255
00FE 8BBD out 0x2b,R24
0100 .dbline 111
0100 ; OCR1AL = 0xFF;
0100 8ABD out 0x2a,R24
0102 .dbline 112
0102 ; OCR1BH = 0x3F;
0102 8FE3 ldi R24,63
0104 89BD out 0x29,R24
0106 .dbline 113
0106 ; OCR1BL = 0xFF;
0106 8FEF ldi R24,255
0108 88BD out 0x28,R24
010A .dbline 114
010A ; ICR1H = 0xFF;
010A 87BD out 0x27,R24
010C .dbline 115
010C ; ICR1L = 0xFF;
010C 86BD out 0x26,R24
010E .dbline 116
010E ; TCCR1A = 0x33;
010E 83E3 ldi R24,51
0110 8FBD out 0x2f,R24
0112 .dbline 117
0112 ; TCCR1B = 0x19; //start Timer
0112 89E1 ldi R24,25
0114 8EBD out 0x2e,R24
0116 .dbline -2
0116 L18:
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbend
0118 .dbfunc e init_devices _init_devices fV
.even
0118 _init_devices::
0118 .dbline -1
0118 .dbline 124
0118 ; }
0118 ;
0118 ;
0118 ;
0118 ; //call this routine to initialize all peripherals
0118 ; void init_devices(void)
0118 ; {
0118 .dbline 126
0118 ; //stop errant interrupts until set up
0118 ; CLI(); //disable all interrupts
0118 F894 cli
011A .dbline 127
011A ; port_init();
011A 72DF xcall _port_init
011C .dbline 128
011C ; watchdog_init();
011C 87DF xcall _watchdog_init
011E .dbline 129
011E ; timer0_init();
011E 8DDF xcall _timer0_init
0120 .dbline 130
0120 ; timer1_init();
0120 E8DF xcall _timer1_init
0122 .dbline 131
0122 ; adc_init();
0122 7BDF xcall _adc_init
0124 .dbline 133
0124 ;
0124 ; MCUCR = 0x00;
0124 2224 clr R2
0126 25BE out 0x35,R2
0128 .dbline 134
0128 ; GICR = 0x00;
0128 2BBE out 0x3b,R2
012A .dbline 135
012A ; TIMSK = 0x05; //timer interrupt sources
012A 85E0 ldi R24,5
012C 89BF out 0x39,R24
012E .dbline 136
012E ; SEI(); //re-enable interrupts
012E 7894 sei
0130 .dbline -2
0130 L19:
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbend
0132 .dbfunc e main _main fV
.even
0132 _main::
0132 .dbline -1
0132 .dbline 140
0132 ; //all peripherals are now initialized
0132 ; }
0132 ; void main(void)
0132 ; {
0132 .dbline 142
0132 ;
0132 ; init_devices();
0132 F2DF xcall _init_devices
0134 .dbline 143
0134 ; TaskInit();
0134 0E940000 xcall _TaskInit
0138 .dbline 144
0138 ; TaskRun();
0138 .dbline -2
0138 L20:
0138 .dbline 0 ; func end
0138 0C940000 xjmp _TaskRun
013C .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\main.c
0000 _disp_flag::
0000 .blkb 1
0001 .dbsym e disp_flag _disp_flag c
0001 _SysP5msTimer::
0001 .blkb 1
0002 .dbsym e SysP5msTimer _SysP5msTimer c
0002 _DisBuffer::
0002 .blkb 8
000A .dbsym e DisBuffer _DisBuffer A[8:8]c
000A _LedBit::
000A .blkb 1
000B .dbsym e LedBit _LedBit c
000B _TaskState::
000B .blkb 4
000F .dbsym e TaskState _TaskState A[4:4]c
000F _CurrentOut::
000F .blkb 2
0011 .dbsym e CurrentOut _CurrentOut i
0011 ;
0011 ; }
0011 ;
0011 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -