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

📄 carinit.lis

📁 本次设计的自动往返电动小汽车
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module CarInit.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\桌面\自动往返小汽车\源程序\自动往返小车lcd版\CarInit.c
 0002                   .dbsym e tenms _tenms I
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\CarInit.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; // car_init.c
 0000           ; // 8/1/2005 written by MrLiu
 0000           ; //
 0000           ; #include <io8515v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #include "1602LCD.h"
 0000           ; #include "CarInit.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 26
 0000           ;     PORTA = 0xFF;
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 27
 0004           ;       DDRA  = 0xFF;
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 28
 0006           ;       PORTB = 0xFF;
 0006 88BB              out 0x18,R24
 0008                   .dbline 29
 0008           ;       DDRB  = 0xFF;
 0008 87BB              out 0x17,R24
 000A                   .dbline 30
 000A           ;       PORTC = 0xFF;
 000A 85BB              out 0x15,R24
 000C                   .dbline 31
 000C           ;       DDRC  = 0x00;
 000C 2224              clr R2
 000E 24BA              out 0x14,R2
 0010                   .dbline 32
 0010           ;       PORTD = 0xFF;
 0010 82BB              out 0x12,R24
 0012                   .dbline 33
 0012           ;       DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014                   .dbline 34
 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 42
 0016           ; 
 0016           ; //////////////////////////////////////////
 0016           ; // Function : timer0_init()
 0016           ; // Purpose : T/C0初始化
 0016           ; // Commnets :产生10ms中断
 0016           ; //
 0016           ; void timer0_init(void)
 0016           ; {
 0016                   .dbline 43
 0016           ;  TCCR0 = 0x00; //stop timer
 0016 2224              clr R2
 0018 23BE              out 0x33,R2
 001A                   .dbline 44
 001A           ;  TCNT0 = 0xB2; //set count value
 001A 82EB              ldi R24,178
 001C 82BF              out 0x32,R24
 001E                   .dbline 45
 001E           ;  TCCR0 = 0x05; //start timer
 001E 85E0              ldi R24,5
 0020 83BF              out 0x33,R24
 0022                   .dbline -2
 0022                   .dbline 46
 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\桌面\自动往返小汽车\源程序\自动往返小车lcd版\CarInit.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 53
 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 54
 0028           ;     TCNT0 = 0xB2; //reload counter value
 0028 82EB              ldi R24,178
 002A 82BF              out 0x32,R24
 002C                   .dbline 55
 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 56
 003E           ;       if (tenms==10)
 003E 8A30              cpi R24,10
 0040 E0E0              ldi R30,0
 0042 9E07              cpc R25,R30
 0044 09F0              breq X0
 0046 76C0              rjmp L4
 0048           X0:
 0048                   .dbline 57
 0048           ;       {
 0048                   .dbline 58
 0048           ;           tenms=0;
 0048 2224              clr R2
 004A 3324              clr R3
 004C 30920100          sts _tenms+1,R3
 0050 20920000          sts _tenms,R2
 0054                   .dbline 59
 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 60
 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 61
 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 62
 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 54C0              rjmp L11
 008C           X1:
 008C                   .dbline 63
 008C           ;               {
 008C                   .dbline 64
 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 65
 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 66
 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 67
 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 68
 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 69
 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 59F5              brne L21
 00DE                   .dbline 70
 00DE           ;                       {
 00DE                   .dbline 71
 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 72
 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 73
 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 74
 010C           ;                               if(time[0]==10)time[0]=0;
 010C 8A30              cpi R24,10
 010E E0E0              ldi R30,0
 0110 9E07              cpc R25,R30
 0112 31F4              brne L26
 0114                   .dbline 74
 0114 2224              clr R2
 0116 3324              clr R3
 0118 30920100          sts _time+1,R3
 011C 20920000          sts _time,R2
 0120           L26:
 0120                   .dbline 75
 0120           ;                       LCD_write(5,0,'0'+time[0]);
 0120 80910000          lds R24,_time
 0124 90910100          lds R25,_time+1
 0128 C096              adiw R24,48
 012A 9983              std y+1,R25
 012C 8883              std y+0,R24
 012E 2227              clr R18
 0130 05E0              ldi R16,5
 0132 00D0              rcall _LCD_write
 0134                   .dbline 76
 0134           ;                       } 
 0134           L21:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -