📄 main.lis
字号:
004E ; DDRD = 0x9F;
004E 8FE9 ldi R24,159
0050 81BB out 0x11,R24
0052 .dbline -2
0052 L5:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e timer1_init _timer1_init fV
.even
0054 _timer1_init::
0054 .dbline -1
0054 .dbline 114
0054 ; }
0054 ;
0054 ; /****************计数器T1初始化***********************/
0054 ; //TIMER1 initialize - prescale:Falling edge
0054 ; // WGM: 0) Normal, TOP=0xFFFF
0054 ; // desired value: 1KHz
0054 ; // actual value: Out of range
0054 ; void timer1_init(void)
0054 ; {
0054 .dbline 115
0054 ; TCCR1B = 0x00; //stop
0054 2224 clr R2
0056 2EBC out 0x2e,R2
0058 .dbline 116
0058 ; TCNT1H = 0x00 /*INVALID SETTING*/; //setup
0058 2DBC out 0x2d,R2
005A .dbline 117
005A ; TCNT1L = 0x00 /*INVALID SETTING*/;
005A 2CBC out 0x2c,R2
005C .dbline 118
005C ; OCR1AH = 0x00 /*INVALID SETTING*/;
005C 2BBC out 0x2b,R2
005E .dbline 119
005E ; OCR1AL = 0x00 /*INVALID SETTING*/;
005E 2ABC out 0x2a,R2
0060 .dbline 120
0060 ; OCR1BH = 0x00 /*INVALID SETTING*/;
0060 29BC out 0x29,R2
0062 .dbline 121
0062 ; OCR1BL = 0x00 /*INVALID SETTING*/;
0062 28BC out 0x28,R2
0064 .dbline 122
0064 ; ICR1H = 0x00 /*INVALID SETTING*/;
0064 27BC out 0x27,R2
0066 .dbline 123
0066 ; ICR1L = 0x00 /*INVALID SETTING*/;
0066 26BC out 0x26,R2
0068 .dbline 124
0068 ; TCCR1A = 0x00;
0068 2FBC out 0x2f,R2
006A .dbline 125
006A ; TCCR1B = 0x00; //start Timer
006A 2EBC out 0x2e,R2
006C .dbline -2
006C L6:
006C .dbline 0 ; func end
006C 0895 ret
006E .dbend
006E .dbfunc e timer0_init _timer0_init fV
.even
006E _timer0_init::
006E .dbline -1
006E .dbline 135
006E ; //TCCR1B = 0x86;
006E ; }
006E ;
006E ; //*************定时器T0初始化********************
006E ; //TIMER0 initialize - prescale:64
006E ; // WGM: Normal
006E ; // desired value: 1mSec
006E ; // actual value: 1.000mSec (0.0%)
006E ; void timer0_init(void)
006E ; {
006E .dbline 136
006E ; TCCR0 = 0x00; //stop
006E 2224 clr R2
0070 23BE out 0x33,R2
0072 .dbline 137
0072 ; TCNT0 = 0x83; //set count
0072 83E8 ldi R24,131
0074 82BF out 0x32,R24
0076 .dbline 138
0076 ; OCR0 = 0x7D; //set compare
0076 8DE7 ldi R24,125
0078 8CBF out 0x3c,R24
007A .dbline 139
007A ; TCCR0 = 0x03; //start timer
007A 83E0 ldi R24,3
007C 83BF out 0x33,R24
007E .dbline -2
007E L7:
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbend
.area vector(rom, abs)
.org 36
0024 0C944000 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0080 .dbfile D:\ac18-1\main.c
0080 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0080 _timer0_ovf_isr::
0080 2A92 st -y,R2
0082 3A92 st -y,R3
0084 8A93 st -y,R24
0086 9A93 st -y,R25
0088 2FB6 in R2,0x3f
008A 2A92 st -y,R2
008C .dbline -1
008C .dbline 145
008C ; }
008C ;
008C ; /************************T0 1mS中断*****************************/
008C ; #pragma interrupt_handler timer0_ovf_isr:10
008C ; void timer0_ovf_isr(void)
008C ; {
008C .dbline 146
008C ; TCNT0 = 0x83; //reload counter value
008C 83E8 ldi R24,131
008E 82BF out 0x32,R24
0090 .dbline 148
0090 ; //------------------------------------
0090 ; if(Wait10S_Start_Flag==1)
0090 80910800 lds R24,_Wait10S_Start_Flag
0094 8130 cpi R24,1
0096 E9F4 brne L9
0098 .dbline 149
0098 ; {
0098 .dbline 150
0098 ; cnt++;
0098 80910200 lds R24,_cnt
009C 90910300 lds R25,_cnt+1
00A0 0196 adiw R24,1
00A2 90930300 sts _cnt+1,R25
00A6 80930200 sts _cnt,R24
00AA .dbline 151
00AA ; if(cnt>6000){Wait10S_Start_Flag=0;Wait10S_End_Flag=1;cnt=0;}
00AA 80E7 ldi R24,6000
00AC 97E1 ldi R25,23
00AE 20900200 lds R2,_cnt
00B2 30900300 lds R3,_cnt+1
00B6 8215 cp R24,R2
00B8 9305 cpc R25,R3
00BA 58F4 brsh L11
00BC .dbline 151
00BC .dbline 151
00BC 2224 clr R2
00BE 20920800 sts _Wait10S_Start_Flag,R2
00C2 .dbline 151
00C2 81E0 ldi R24,1
00C4 80930900 sts _Wait10S_End_Flag,R24
00C8 .dbline 151
00C8 3324 clr R3
00CA 30920300 sts _cnt+1,R3
00CE 20920200 sts _cnt,R2
00D2 .dbline 151
00D2 L11:
00D2 .dbline 152
00D2 ; }
00D2 L9:
00D2 .dbline 154
00D2 ; //------------------------------------
00D2 ; if(Wait6S_Start_Flag==1)
00D2 80910A00 lds R24,_Wait6S_Start_Flag
00D6 8130 cpi R24,1
00D8 E9F4 brne L13
00DA .dbline 155
00DA ; {
00DA .dbline 156
00DA ; cnt++;
00DA 80910200 lds R24,_cnt
00DE 90910300 lds R25,_cnt+1
00E2 0196 adiw R24,1
00E4 90930300 sts _cnt+1,R25
00E8 80930200 sts _cnt,R24
00EC .dbline 157
00EC ; if(cnt>6000){Wait6S_Start_Flag=0;Wait6S_End_Flag=1;cnt=0;}
00EC 80E7 ldi R24,6000
00EE 97E1 ldi R25,23
00F0 20900200 lds R2,_cnt
00F4 30900300 lds R3,_cnt+1
00F8 8215 cp R24,R2
00FA 9305 cpc R25,R3
00FC 58F4 brsh L15
00FE .dbline 157
00FE .dbline 157
00FE 2224 clr R2
0100 20920A00 sts _Wait6S_Start_Flag,R2
0104 .dbline 157
0104 81E0 ldi R24,1
0106 80930B00 sts _Wait6S_End_Flag,R24
010A .dbline 157
010A 3324 clr R3
010C 30920300 sts _cnt+1,R3
0110 20920200 sts _cnt,R2
0114 .dbline 157
0114 L15:
0114 .dbline 158
0114 ; }
0114 L13:
0114 .dbline 160
0114 ; //------------------------------------
0114 ; if(Wait2S_Start_Flag==1)
0114 80910C00 lds R24,_Wait2S_Start_Flag
0118 8130 cpi R24,1
011A E9F4 brne L17
011C .dbline 161
011C ; {
011C .dbline 162
011C ; cnt++;
011C 80910200 lds R24,_cnt
0120 90910300 lds R25,_cnt+1
0124 0196 adiw R24,1
0126 90930300 sts _cnt+1,R25
012A 80930200 sts _cnt,R24
012E .dbline 163
012E ; if(cnt>2000){Wait2S_Start_Flag=0;Wait2S_End_Flag=1;cnt=0;}
012E 80ED ldi R24,2000
0130 97E0 ldi R25,7
0132 20900200 lds R2,_cnt
0136 30900300 lds R3,_cnt+1
013A 8215 cp R24,R2
013C 9305 cpc R25,R3
013E 58F4 brsh L19
0140 .dbline 163
0140 .dbline 163
0140 2224 clr R2
0142 20920C00 sts _Wait2S_Start_Flag,R2
0146 .dbline 163
0146 81E0 ldi R24,1
0148 80930D00 sts _Wait2S_End_Flag,R24
014C .dbline 163
014C 3324 clr R3
014E 30920300 sts _cnt+1,R3
0152 20920200 sts _cnt,R2
0156 .dbline 163
0156 L19:
0156 .dbline 164
0156 L17:
0156 .dbline -2
0156 L8:
0156 2990 ld R2,y+
0158 2FBE out 0x3f,R2
015A 9991 ld R25,y+
015C 8991 ld R24,y+
015E 3990 ld R3,y+
0160 2990 ld R2,y+
0162 .dbline 0 ; func end
0162 1895 reti
0164 .dbend
0164 .dbfunc e init_devices _init_devices fV
.even
0164 _init_devices::
0164 .dbline -1
0164 .dbline 170
0164 ; }
0164 ; }
0164 ;
0164 ; /************************器件初始化***************************/
0164 ; //call this routine to initialize all peripherals
0164 ; void init_devices(void)
0164 ; {
0164 .dbline 172
0164 ; //stop errant interrupts until set up
0164 ; CLI(); //disable all interrupts
0164 F894 cli
0166 .dbline 173
0166 ; port_init();
0166 68DF xcall _port_init
0168 .dbline 174
0168 ; timer0_init();
0168 82DF xcall _timer0_init
016A .dbline 175
016A ; timer1_init();
016A 74DF xcall _timer1_init
016C .dbline 176
016C ; adc_init();
016C 5CDF xcall _adc_init
016E .dbline 177
016E ; MCUCR = 0x00;
016E 2224 clr R2
0170 25BE out 0x35,R2
0172 .dbline 178
0172 ; GICR = 0x00;
0172 2BBE out 0x3b,R2
0174 .dbline 179
0174 ; TIMSK = 0x01; //timer interrupt sources
0174 81E0 ldi R24,1
0176 89BF out 0x39,R24
0178 .dbline 180
0178 ; SEI(); //re-enable interrupts
0178 7894 sei
017A .dbline 181
017A ; watchdog_init();
017A 51DF xcall _watchdog_init
017C .dbline -2
017C L21:
017C .dbline 0 ; func end
017C 0895 ret
017E .dbend
017E .dbfunc e welcome _welcome fV
.even
017E _welcome::
017E 2297 sbiw R28,2
0180 .dbline -1
0180 .dbline 187
0180 ; //all peripherals are now initialized
0180 ; }
0180 ;
0180 ; /**********************欢迎界面********************/
0180 ; void welcome(void)
0180 ; {
0180 .dbline 188
0180 ; ePutstr(0,0,str0);
0180 80E0 ldi R24,<_str0
0182 90E0 ldi R25,>_str0
0184 9983 std y+1,R25
0186 8883 std y+0,R24
0188 2227 clr R18
018A 0027 clr R16
018C 0E940000 xcall _ePutstr
0190 .dbline 189
0190 ; ePutstr(0,1,str1);
0190 80E0 ldi R24,<_str1
0192 90E0 ldi R25,>_str1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -