?? dtm48-td.lis
字號:
.module dtm48-td.C
.area data(ram, con, rel)
0000 _mark::
0000 .blkb 2
.area idata
0000 DC05 .word 1500
.area data(ram, con, rel)
0002 .dbfile H:\ele\AVR\ICC\diantiao\dtm48-td\dtm48-td.C
0002 .dbsym e mark _mark I
.area text(rom, con, rel)
0000 .dbfile H:\ele\AVR\ICC\diantiao\dtm48-td\dtm48-td.C
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 32
0000 ; /******************************************/
0000 ; /* 燕山大學無線電愛好者協(xié)會 */
0000 ; /* 電子調速器 */
0000 ; /* 作者:張翃鵬 2005-2-27 9:04:40 */
0000 ; /* 目標MCU:MEGA8 晶振:INT RC 8MHZ */
0000 ; /******************************************/
0000 ;
0000 ; #include <iom48v.h>
0000 ; #include <macros.h>
0000 ; #include <eeprom.h>
0000 ; #define uchar unsigned char
0000 ; #define unit unsigned int
0000 ; #define ulong unsigned long
0000 ; #define xtal 8
0000 ; #define j11 PORTD|=0x02
0000 ; #define j10 PORTD&=~0x02
0000 ; #define j21 PORTD|=0x10
0000 ; #define j20 PORTD&=~0x10
0000 ; #define j31 PORTB|=0x40
0000 ; #define j30 PORTB&=~0x40
0000 ; #define j41 PORTD|=0x40
0000 ; #define j40 PORTD&=~0x40
0000 ; #define LED1 PORTB|=0x08;
0000 ; #define LED0 PORTB&=~0x08;
0000 ;
0000 ;
0000 ; int mark=1500;
0000 ; unit ai,aa;
0000 ; uchar i,j,az,flag,flagh,zb,mid,pwm;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 33
0000 ; PORTB = 0x23;
0000 83E2 ldi R24,35
0002 85B9 out 0x5,R24
0004 .dbline 34
0004 ; DDRB = 0x58;
0004 88E5 ldi R24,88
0006 84B9 out 0x4,R24
0008 .dbline 35
0008 ; PORTC = 0x04; //m103 output only
0008 84E0 ldi R24,4
000A 88B9 out 0x8,R24
000C .dbline 36
000C ; DDRC = 0x38;
000C 88E3 ldi R24,56
000E 87B9 out 0x7,R24
0010 .dbline 37
0010 ; PORTD = 0x00;
0010 2224 clr R2
0012 2BB8 out 0xb,R2
0014 .dbline 38
0014 ; DDRD = 0x52;
0014 82E5 ldi R24,82
0016 8AB9 out 0xa,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e timer1_init _timer1_init fV
.even
001A _timer1_init::
001A .dbline -1
001A .dbline 42
001A ; }
001A ;
001A ; void timer1_init(void)
001A ; {
001A .dbline 43
001A ; TCCR1B = 0x00; //stop
001A 2224 clr R2
001C 20928100 sts 129,R2
0020 .dbline 44
0020 ; TCNT1H = 0x00 /*INVALID SETTING*/; //setup
0020 20928500 sts 133,R2
0024 .dbline 45
0024 ; TCNT1L = 0x00 /*INVALID SETTING*/;
0024 20928400 sts 132,R2
0028 .dbline 46
0028 ; OCR1AH = 0x00 /*INVALID SETTING*/;
0028 20928900 sts 137,R2
002C .dbline 47
002C ; OCR1AL = 0x00 /*INVALID SETTING*/;
002C 20928800 sts 136,R2
0030 .dbline 48
0030 ; OCR1BH = 0x00 /*INVALID SETTING*/;
0030 20928B00 sts 139,R2
0034 .dbline 49
0034 ; OCR1BL = 0x00 /*INVALID SETTING*/;
0034 20928A00 sts 138,R2
0038 .dbline 50
0038 ; ICR1H = 0x00 /*INVALID SETTING*/;
0038 20928700 sts 135,R2
003C .dbline 51
003C ; ICR1L = 0x00 /*INVALID SETTING*/;
003C 20928600 sts 134,R2
0040 .dbline 52
0040 ; TCCR1A = 0x00;
0040 20928000 sts 128,R2
0044 .dbline 53
0044 ; TCCR1B = 0x02; //start Timer
0044 82E0 ldi R24,2
0046 80938100 sts 129,R24
004A .dbline -2
004A L2:
004A .dbline 0 ; func end
004A 0895 ret
004C .dbend
004C .dbfunc e timer2_init _timer2_init fV
.even
004C _timer2_init::
004C .dbline -1
004C .dbline 61
004C ; }
004C ;
004C ; //TIMER2 initialize - prescale:8
004C ; // WGM: Normal
004C ; // desired value: 255uSec
004C ; // actual value: 255.000uSec (0.0%)
004C ; void timer2_init(void)
004C ; {
004C .dbline 62
004C ; TCCR2B = 0x00; //stop
004C 2224 clr R2
004E 2092B100 sts 177,R2
0052 .dbline 63
0052 ; ASSR = 0x00; //set async mode
0052 2092B600 sts 182,R2
0056 .dbline 64
0056 ; TCNT2 = 0x01; //setup
0056 81E0 ldi R24,1
0058 8093B200 sts 178,R24
005C .dbline 65
005C ; OCR2A = 0;
005C 2092B300 sts 179,R2
0060 .dbline 66
0060 ; OCR2B = 0x00;
0060 2092B400 sts 180,R2
0064 .dbline 67
0064 ; TCCR2A = 0x00;
0064 2092B000 sts 176,R2
0068 .dbline 68
0068 ; TCCR2B = 0x02; //start
0068 82E0 ldi R24,2
006A 8093B100 sts 177,R24
006E .dbline -2
006E L3:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
0070 .dbfunc e watchdog_init _watchdog_init fV
.even
0070 _watchdog_init::
0070 .dbline -1
0070 .dbline 71
0070 ; }
0070 ; void watchdog_init(void)
0070 ; {
0070 .dbline 72
0070 ; WDR(); //this prevents a timout on enabling
0070 A895 wdr
0072 .dbline 73
0072 ; WDTCSR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
0072 88E0 ldi R24,8
0074 80936000 sts 96,R24
0078 .dbline -2
0078 L4:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbend
007A .dbfunc e init_devices _init_devices fV
.even
007A _init_devices::
007A .dbline -1
007A .dbline 79
007A ; }
007A ;
007A ;
007A ; //call this routine to initialize all peripherals
007A ; void init_devices(void)
007A ; {
007A .dbline 81
007A ; //stop errant interrupts until set up
007A ; CLI(); //disable all interrupts
007A F894 cli
007C .dbline 82
007C ; port_init();
007C C1DF rcall _port_init
007E .dbline 83
007E ; timer1_init();
007E CDDF rcall _timer1_init
0080 .dbline 84
0080 ; timer2_init();
0080 E5DF rcall _timer2_init
0082 .dbline 85
0082 ; watchdog_init();
0082 F6DF rcall _watchdog_init
0084 .dbline 87
0084 ;
0084 ; MCUCR = 0x00;
0084 2224 clr R2
0086 25BE out 0x35,R2
0088 .dbline 88
0088 ; EICRA = 0x00; //extended ext ints
0088 20926900 sts 105,R2
008C .dbline 89
008C ; EIMSK = 0x00;
008C 2DBA out 0x1d,R2
008E .dbline 91
008E ;
008E ; TIMSK0 = 0x00; //timer 0 interrupt sources
008E 20926E00 sts 110,R2
0092 .dbline 92
0092 ; TIMSK1 = 0x00; //timer 1 interrupt sources
0092 20926F00 sts 111,R2
0096 .dbline 93
0096 ; TIMSK2 = 0x03; //timer 2 interrupt sources
0096 83E0 ldi R24,3
0098 80937000 sts 112,R24
009C .dbline 95
009C ;
009C ; PCMSK0 = 0x00; //pin change mask 0
009C 20926B00 sts 107,R2
00A0 .dbline 96
00A0 ; PCMSK1 = 0x00; //pin change mask 1
00A0 20926C00 sts 108,R2
00A4 .dbline 97
00A4 ; PCMSK2 = 0x00; //pin change mask 2
00A4 20926D00 sts 109,R2
00A8 .dbline 98
00A8 ; PCICR = 0x00; //pin change enable
00A8 20926800 sts 104,R2
00AC .dbline 99
00AC ; PRR = 0x00; //power controller
00AC 20926400 sts 100,R2
00B0 .dbline 100
00B0 ; SEI(); //re-enable interrupts
00B0 7894 sei
00B2 .dbline -2
00B2 L5:
00B2 .dbline 0 ; func end
00B2 0895 ret
00B4 .dbend
00B4 .dbfunc e del _del fV
00B4 ; time -> R16,R17
.even
00B4 _del::
00B4 .dbline -1
00B4 .dbline 107
00B4 ; //all peripherals are now initialized
00B4 ; }
00B4 ;
00B4 ;
00B4 ; /* 微秒級延時程序 */
00B4 ; void del(int time)
00B4 ; {
00B4 L7:
00B4 .dbline 109
00B4 ; do
00B4 ; {
00B4 .dbline 110
00B4 ; time--;
00B4 0150 subi R16,1
00B6 1040 sbci R17,0
00B8 .dbline 111
00B8 ; }
00B8 L8:
00B8 .dbline 112
00B8 ; while (time>1);
00B8 81E0 ldi R24,1
00BA 90E0 ldi R25,0
00BC 8017 cp R24,R16
00BE 9107 cpc R25,R17
00C0 CCF3 brlt L7
00C2 .dbline -2
00C2 L6:
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbsym r time 16 I
00C4 .dbend
00C4 .dbfunc e delay_1ms _delay_1ms fV
00C4 ; i1 -> R16,R17
.even
00C4 _delay_1ms::
00C4 .dbline -1
00C4 .dbline 117
00C4 ; }
00C4 ;
00C4 ; /* 毫秒級延時程序 */
00C4 ; void delay_1ms(void)
00C4 ; { unsigned int i1;
00C4 .dbline 118
00C4 ; for(i1=1;i1<(unsigned int)(xtal*143-2);i1++)
00C4 01E0 ldi R16,1
00C6 10E0 ldi R17,0
00C8 02C0 rjmp L14
00CA L11:
00CA .dbline 119
00CA L12:
00CA .dbline 118
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -