📄 car_init.lis
字号:
.module car_init.c
.area data(ram, con, rel)
0000 _tenms::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\car_init.c
0002 .dbsym e tenms _tenms I
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\car_init.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 26
0000 ; // car_init.c
0000 ; // 8/1/2005 written by MrLiu
0000 ; //
0000 ;
0000 ; #include <io8515v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #include "1602LCD.h"
0000 ; #include "car_init.h"
0000 ;
0000 ; // globals
0000 ; int tenms=0;
0000 ;
0000 ; // extern varables
0000 ; extern int lcnt;
0000 ; extern int qcnt;
0000 ; extern int juli[3];
0000 ; extern unsigned int time[3];
0000 ;
0000 ; ////////////////////////////////////////////
0000 ; // Function : port_init()
0000 ; // Purpose :端口初始化
0000 ; // Comments : A口输出/B口输出/C口输入/D口输入
0000 ; //
0000 ; void port_init(void)
0000 ; {
0000 .dbline 27
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 28
0004 ; DDRA = 0xFF;
0004 8ABB out 0x1a,R24
0006 .dbline 29
0006 ; PORTB = 0xFF;
0006 88BB out 0x18,R24
0008 .dbline 30
0008 ; DDRB = 0xFF;
0008 87BB out 0x17,R24
000A .dbline 31
000A ; PORTC = 0xFF;
000A 85BB out 0x15,R24
000C .dbline 32
000C ; DDRC = 0x00;
000C 2224 clr R2
000E 24BA out 0x14,R2
0010 .dbline 33
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 34
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 .dbline 35
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 44
0016 ;
0016 ; //////////////////////////////////////////
0016 ; // Function : timer0_init()
0016 ; // Purpose : T/C0初始化
0016 ; // Commnets :产生10ms中断
0016 ; //
0016 ;
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 45
0016 ; TCCR0 = 0x00; //stop timer
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 46
001A ; TCNT0 = 0xB2; //set count value
001A 82EB ldi R24,178
001C 82BF out 0x32,R24
001E .dbline 47
001E ; TCCR0 = 0x05; //start timer
001E 85E0 ldi R24,5
0020 83BF out 0x33,R24
0022 .dbline -2
0022 .dbline 48
0022 ; }
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area vector(rom, abs)
.org 14
000E 12C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0024 .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\car_init.c
0024 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0024 _timer0_ovf_isr::
0024 00D0 rcall push_lset
0026 2297 sbiw R28,2
0028 .dbline -1
0028 .dbline 55
0028 ;
0028 ; // Function : timer0_ovf_isr()
0028 ; // Purpose : T/C0中断服务
0028 ; //
0028 ; #pragma interrupt_handler timer0_ovf_isr:8
0028 ; void timer0_ovf_isr(void)
0028 ; {
0028 .dbline 56
0028 ; TCNT0 = 0xB2; //reload counter value
0028 82EB ldi R24,178
002A 82BF out 0x32,R24
002C .dbline 57
002C ; tenms++;
002C 80910000 lds R24,_tenms
0030 90910100 lds R25,_tenms+1
0034 0196 adiw R24,1
0036 90930100 sts _tenms+1,R25
003A 80930000 sts _tenms,R24
003E .dbline 58
003E ; if (tenms==10)
003E 8A30 cpi R24,10
0040 E0E0 ldi R30,0
0042 9E07 cpc R25,R30
0044 09F0 breq X0
0046 68C0 rjmp L4
0048 X0:
0048 .dbline 59
0048 ; {
0048 .dbline 60
0048 ; tenms=0;
0048 2224 clr R2
004A 3324 clr R3
004C 30920100 sts _tenms+1,R3
0050 20920000 sts _tenms,R2
0054 .dbline 61
0054 ; time[2]++;
0054 80910400 lds R24,_time+4
0058 90910500 lds R25,_time+4+1
005C 0196 adiw R24,1
005E 90930500 sts _time+4+1,R25
0062 80930400 sts _time+4,R24
0066 .dbline 62
0066 ; if(time[2]<10)
0066 8A30 cpi R24,10
0068 E0E0 ldi R30,0
006A 9E07 cpc R25,R30
006C 30F4 brsh L7
006E .dbline 63
006E ; LCD_write(8,0,'0'+time[2]);
006E C096 adiw R24,48
0070 9983 std y+1,R25
0072 8883 std y+0,R24
0074 2227 clr R18
0076 08E0 ldi R16,8
0078 00D0 rcall _LCD_write
007A L7:
007A .dbline 64
007A ; if(time[2]==10)
007A 80910400 lds R24,_time+4
007E 90910500 lds R25,_time+4+1
0082 8A30 cpi R24,10
0084 E0E0 ldi R30,0
0086 9E07 cpc R25,R30
0088 09F0 breq X1
008A 46C0 rjmp L11
008C X1:
008C .dbline 65
008C ; {
008C .dbline 66
008C ; time[2]=0;
008C 2224 clr R2
008E 3324 clr R3
0090 30920500 sts _time+4+1,R3
0094 20920400 sts _time+4,R2
0098 .dbline 67
0098 ; LCD_write(8,0,'0'+time[2]);
0098 822D mov R24,R2
009A 932D mov R25,R3
009C C096 adiw R24,48
009E 9983 std y+1,R25
00A0 8883 std y+0,R24
00A2 2227 clr R18
00A4 08E0 ldi R16,8
00A6 00D0 rcall _LCD_write
00A8 .dbline 68
00A8 ; time[1]++;
00A8 80910200 lds R24,_time+2
00AC 90910300 lds R25,_time+2+1
00B0 0196 adiw R24,1
00B2 90930300 sts _time+2+1,R25
00B6 80930200 sts _time+2,R24
00BA .dbline 69
00BA ; if(time[1]<10)
00BA 8A30 cpi R24,10
00BC E0E0 ldi R30,0
00BE 9E07 cpc R25,R30
00C0 30F4 brsh L17
00C2 .dbline 70
00C2 ; LCD_write(6,0,'0'+time[1]);
00C2 C096 adiw R24,48
00C4 9983 std y+1,R25
00C6 8883 std y+0,R24
00C8 2227 clr R18
00CA 06E0 ldi R16,6
00CC 00D0 rcall _LCD_write
00CE L17:
00CE .dbline 71
00CE ; if(time[1]==10)
00CE 80910200 lds R24,_time+2
00D2 90910300 lds R25,_time+2+1
00D6 8A30 cpi R24,10
00D8 E0E0 ldi R30,0
00DA 9E07 cpc R25,R30
00DC E9F4 brne L21
00DE .dbline 72
00DE ; {
00DE .dbline 73
00DE ; time[1]=0;
00DE 2224 clr R2
00E0 3324 clr R3
00E2 30920300 sts _time+2+1,R3
00E6 20920200 sts _time+2,R2
00EA .dbline 74
00EA ; LCD_write(6,0,'0'+time[1]);
00EA 822D mov R24,R2
00EC 932D mov R25,R3
00EE C096 adiw R24,48
00F0 9983 std y+1,R25
00F2 8883 std y+0,R24
00F4 2227 clr R18
00F6 06E0 ldi R16,6
00F8 00D0 rcall _LCD_write
00FA .dbline 75
00FA ; time[0]++;
00FA 80910000 lds R24,_time
00FE 90910100 lds R25,_time+1
0102 0196 adiw R24,1
0104 90930100 sts _time+1,R25
0108 80930000 sts _time,R24
010C .dbline 76
010C ; LCD_write(5,0,'0'+time[0]);
010C C096 adiw R24,48
010E 9983 std y+1,R25
0110 8883 std y+0,R24
0112 2227 clr R18
0114 05E0 ldi R16,5
0116 00D0 rcall _LCD_write
0118 .dbline 77
0118 ; }
0118 L21:
0118 .dbline 78
0118 ; }
0118 L11:
0118 .dbline 79
0118 L4:
0118 .dbline -2
0118 .dbline 80
0118 ; }
0118 ; }
0118 L3:
0118 2296 adiw R28,2
011A 00D0 rcall pop_lset
011C .dbline 0 ; func end
011C 1895 reti
011E .dbend
011E .dbfunc e timer1_init _timer1_init fV
.even
011E _timer1_init::
011E .dbline -1
011E .dbline 88
011E ;
011E ; ////////////////////////////////////////
011E ; // Function : timer1_init()
011E ; // Purpose : T/C1 PWM模式初始化
011E ; //
011E ;
011E ; void timer1_init(void)
011E ; {
011E .dbline 89
011E ; TCCR1B = 0x00; //stop
011E 2224 clr R2
0120 2EBC out 0x2e,R2
0122 .dbline 90
0122 ; TCNT1H = 0xE0; //setup
0122 80EE ldi R24,224
0124 8DBD out 0x2d,R24
0126 .dbline 91
0126 ; TCNT1L = 0xC0;
0126 80EC ldi R24,192
0128 8CBD out 0x2c,R24
012A .dbline 92
012A ; OCR1AH = 0x1F;
012A 8FE1 ldi R24,31
012C 8BBD out 0x2b,R24
012E .dbline 93
012E ; OCR1AL = 0x40;
012E 80E4 ldi R24,64
0130 8ABD out 0x2a,R24
0132 .dbline 94
0132 ; OCR1BH = 0xFF;
0132 8FEF ldi R24,255
0134 89BD out 0x29,R24
0136 .dbline 95
0136 ; OCR1BL = 0xFF;
0136 88BD out 0x28,R24
0138 .dbline 96
0138 ; TCCR1A = 0x63;
0138 83E6 ldi R24,99
013A 8FBD out 0x2f,R24
013C .dbline 97
013C ; TCCR1B = 0x01; //start Timer
013C 81E0 ldi R24,1
013E 8EBD out 0x2e,R24
0140 .dbline -2
0140 .dbline 98
0140 ; }
0140 L26:
0140 .dbline 0 ; func end
0140 0895 ret
0142 .dbend
.area vector(rom, abs)
.org 2
0002 A1C0 rjmp _int0_isr
.area text(rom, con, rel)
0142 .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\car_init.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -