📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\TWINTI~1\main.c
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 48
0000 ; /********************************************************************************/
0000 ; //
0000 ; // builder : 2007-04-10
0000 ; // Target : ATMEAG 48V
0000 ; // Crystal : 内部 8.00 MHz
0000 ; //
0000 ; //
0000 ;
0000 ; /********************************************************************************/
0000 ;
0000 ; #include <iom48v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #include "eeprom.h"
0000 ; #include "time2.h"
0000 ; #include "adc.h"
0000 ;
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define SET_LED PORTD |= (1<<PB4)
0000 ; #define CLR_LED PORTD &= ~(1<<PB4)
0000 ;
0000 ; uchar e2rom[7];
0000 ;
0000 ; uint PE1,PE2;
0000 ;
0000 ; uchar mode;
0000 ; uchar rxd_flag; // 油门接收OK标志
0000 ;
0000 ; uchar PWM;
0000 ; uint Timer;
0000 ; uint high,middle,low;
0000 ; uchar REV;
0000 ; uchar power;
0000 ; uchar heat;
0000 ; union
0000 ; { uint temp;
0000 ; uchar data[2];
0000 ; }time;
0000 ;
0000 ;
0000 ; /*---------------------------------------------------------------
0000 ; 初始化
0000 ; ----------------------------------------------------------------*/
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 49
0000 ; TCCR0B = 0x00; //stop
0000 2224 clr R2
0002 25BC out 0x25,R2
0004 .dbline 50
0004 ; TCNT0 = 0x01; //set count
0004 81E0 ldi R24,1
0006 86BD out 0x26,R24
0008 .dbline 51
0008 ; TCCR0A = 0x23;
0008 83E2 ldi R24,35
000A 84BD out 0x24,R24
000C .dbline 52
000C ; OCR0B = 0xA5;
000C 85EA ldi R24,165
000E 88BD out 0x28,R24
0010 .dbline 53
0010 ; TCCR0B = 0x01; //start timer
0010 81E0 ldi R24,1
0012 85BD out 0x25,R24
0014 .dbline -2
0014 L2:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer1_init _timer1_init fV
.even
0016 _timer1_init::
0016 .dbline -1
0016 .dbline 59
0016 ; }
0016 ;
0016 ;
0016 ;
0016 ; void timer1_init(void) // 20MS 中断
0016 ; {
0016 .dbline 60
0016 ; TCCR1B = 0x00; // stop
0016 2224 clr R2
0018 20928100 sts 129,R2
001C .dbline 61
001C ; TCNT1H = 0xB1; // setup
001C 81EB ldi R24,177
001E 80938500 sts 133,R24
0022 .dbline 62
0022 ; TCNT1L = 0xE0;
0022 80EE ldi R24,224
0024 80938400 sts 132,R24
0028 .dbline 63
0028 ; OCR1AH = 0x4E;
0028 8EE4 ldi R24,78
002A 80938900 sts 137,R24
002E .dbline 64
002E ; OCR1AL = 0x20;
002E 80E2 ldi R24,32
0030 80938800 sts 136,R24
0034 .dbline 65
0034 ; OCR1BH = 0x4E;
0034 8EE4 ldi R24,78
0036 80938B00 sts 139,R24
003A .dbline 66
003A ; OCR1BL = 0x20;
003A 80E2 ldi R24,32
003C 80938A00 sts 138,R24
0040 .dbline 67
0040 ; ICR1H = 0x4E;
0040 8EE4 ldi R24,78
0042 80938700 sts 135,R24
0046 .dbline 68
0046 ; ICR1L = 0x20;
0046 80E2 ldi R24,32
0048 80938600 sts 134,R24
004C .dbline 69
004C ; TCCR1A = 0x00;
004C 20928000 sts 128,R2
0050 .dbline -2
0050 L3:
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbend
0052 .dbfunc e init_devices _init_devices fV
.even
0052 _init_devices::
0052 .dbline -1
0052 .dbline 74
0052 ; }
0052 ;
0052 ;
0052 ; void init_devices(void)
0052 ; {
0052 .dbline 75
0052 ; CLI();
0052 F894 cli
0054 .dbline 77
0054 ;
0054 ; DDRB = 0x7F;
0054 8FE7 ldi R24,127
0056 84B9 out 0x4,R24
0058 .dbline 78
0058 ; PORTB = 0xC0;
0058 80EC ldi R24,192
005A 85B9 out 0x5,R24
005C .dbline 80
005C ;
005C ; DDRC = 0x00;
005C 2224 clr R2
005E 27B8 out 0x7,R2
0060 .dbline 81
0060 ; PORTC = 0x40; // m103 output only
0060 80E4 ldi R24,64
0062 88B9 out 0x8,R24
0064 .dbline 83
0064 ;
0064 ; DDRD = 0xFB;
0064 8BEF ldi R24,251
0066 8AB9 out 0xa,R24
0068 .dbline 84
0068 ; PORTD = 0x40;
0068 80E4 ldi R24,64
006A 8BB9 out 0xb,R24
006C .dbline 86
006C ;
006C ; MCUCR = 0x00;
006C 25BE out 0x35,R2
006E .dbline 87
006E ; EICRA = 0x03; // INT0 上升沿触发
006E 83E0 ldi R24,3
0070 80936900 sts 105,R24
0074 .dbline 88
0074 ; EIMSK = 0x01; // 使能 INT0 中断
0074 81E0 ldi R24,1
0076 8DBB out 0x1d,R24
0078 .dbline 90
0078 ;
0078 ; timer0_init();
0078 C3DF rcall _timer0_init
007A .dbline 91
007A ; timer1_init();
007A CDDF rcall _timer1_init
007C .dbline 92
007C ; timer2_init();
007C 00D0 rcall _timer2_init
007E .dbline 93
007E ; init_eeprom();
007E 00D0 rcall _init_eeprom
0080 .dbline 94
0080 ; adc_int();
0080 00D0 rcall _adc_int
0082 .dbline 96
0082 ;
0082 ; SEI();
0082 7894 sei
0084 .dbline -2
0084 L4:
0084 .dbline 0 ; func end
0084 0895 ret
0086 .dbend
0086 .dbfunc e delay _delay fV
0086 ; i -> R20,R21
0086 ; j -> R22,R23
0086 ; k -> R10,R11
0086 ; t -> R16,R17
.even
0086 _delay::
0086 00D0 rcall push_gset3
0088 .dbline -1
0088 .dbline 104
0088 ; }
0088 ;
0088 ; /*---------------------------------------------------------------
0088 ; 延时
0088 ; ----------------------------------------------------------------*/
0088 ;
0088 ; void delay(uint t)
0088 ; {
0088 .dbline 107
0088 ; uint i,j,k;
0088 ;
0088 ; for(i=0;i<t;i++)
0088 4427 clr R20
008A 5527 clr R21
008C 16C0 rjmp L9
008E L6:
008E .dbline 108
008E ; {
008E .dbline 109
008E ; for(j=0;j<200;j++)
008E 6627 clr R22
0090 7727 clr R23
0092 0DC0 rjmp L13
0094 L10:
0094 .dbline 110
0094 ; {
0094 .dbline 111
0094 AA24 clr R10
0096 BB24 clr R11
0098 03C0 rjmp L17
009A L14:
009A .dbline 111
009A L15:
009A .dbline 111
009A C501 movw R24,R10
009C 0196 adiw R24,1
009E 5C01 movw R10,R24
00A0 L17:
00A0 .dbline 111
00A0 C501 movw R24,R10
00A2 8233 cpi R24,50
00A4 E0E0 ldi R30,0
00A6 9E07 cpc R25,R30
00A8 C0F3 brlo L14
00AA .dbline 111
00AA .dbline 112
00AA L11:
00AA .dbline 109
00AA 6F5F subi R22,255 ; offset = 1
00AC 7F4F sbci R23,255
00AE L13:
00AE .dbline 109
00AE 683C cpi R22,200
00B0 E0E0 ldi R30,0
00B2 7E07 cpc R23,R30
00B4 78F3 brlo L10
00B6 .dbline 113
00B6 L7:
00B6 .dbline 107
00B6 4F5F subi R20,255 ; offset = 1
00B8 5F4F sbci R21,255
00BA L9:
00BA .dbline 107
00BA 4017 cp R20,R16
00BC 5107 cpc R21,R17
00BE 38F3 brlo L6
00C0 .dbline -2
00C0 L5:
00C0 00D0 rcall pop_gset3
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbsym r i 20 i
00C4 .dbsym r j 22 i
00C4 .dbsym r k 10 i
00C4 .dbsym r t 16 i
00C4 .dbend
00C4 .dbfunc e LED_set _LED_set fV
.even
00C4 _LED_set::
00C4 .dbline -1
00C4 .dbline 118
00C4 ; for(k=0;k<50;k++);;
00C4 ; }
00C4 ; }
00C4 ; }
00C4 ;
00C4 ;
00C4 ; void LED_set(void)
00C4 ; {
00C4 .dbline 119
00C4 ; SET_LED ;
00C4 5C9A sbi 0xb,4
00C6 .dbline 120
00C6 ; delay(10);
00C6 0AE0 ldi R16,10
00C8 10E0 ldi R17,0
00CA DDDF rcall _delay
00CC .dbline 121
00CC ; CLR_LED ;
00CC 5C98 cbi 0xb,4
00CE .dbline 122
00CE ; delay(8);
00CE 08E0 ldi R16,8
00D0 10E0 ldi R17,0
00D2 D9DF rcall _delay
00D4 .dbline -2
00D4 L18:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
00D6 .dbfunc e egis _egis fV
00D6 ; temp -> R20,R21
.even
00D6 _egis::
00D6 00D0 rcall push_gset1
00D8 .dbline -1
00D8 .dbline 126
00D8 ; }
00D8 ;
00D8 ; void egis(void)
00D8 ; {
00D8 .dbline 129
00D8 ; uint temp;
00D8 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -