⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 car_init.lis

📁 本次设计的自动往返电动小汽车
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -