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

📄 main.lis

📁 EPPROM应用,测试程序,AVR内核,供初学者参考
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module MAIN.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVRPRO~1\EEPROM\MAIN.C
                        .area vector(rom, abs)
                        .org 32
 0020 DAC0              rjmp _Icp_time0
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVRPRO~1\EEPROM\MAIN.C
                        .area vector(rom, abs)
                        .org 2
 0002 FAC0              rjmp _Int0
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVRPRO~1\EEPROM\MAIN.C
 0000                   .dbfunc e main _main fV
 0000           ;           flag -> R10
 0000           ;      deciMeter -> R12
 0000           ;        ep_temp -> R10,R11
 0000           ;       ep_temp1 -> R10
 0000           ;       ep_temp2 -> R12
 0000           ;    speed_temp1 -> R12,R13
 0000           ;         speed2 -> R12
 0000           ;         speed1 -> R14
 0000           ;      timeBlock -> y+2
 0000           ;     speed_temp -> y+0
 0000           ;           temp -> R10
                        .even
 0000           _main::
 0000 2497              sbiw R28,4
 0002                   .dbline -1
 0002                   .dbline 29
 0002           ; //**************************************************
 0002           ; //project              :SPEED TO POWER SWITCH
 0002           ; //chiptype             :ATMEGA48
 0002           ; //Clock frequency      :8.00000MHZ
 0002           ; //Author               :XIEHELI
 0002           ; //From                 :HORN
 0002           ; //**************************************************
 0002           ; #include<iom48v.h>
 0002           ; #include<macros.h>
 0002           ; #define u08 unsigned char
 0002           ; #define u16 unsigned int
 0002           ; #define u32 unsigned long
 0002           ; #pragma interrupt_handler Icp_time0:17
 0002           ; #pragma interrupt_handler Int0:2
 0002           ; void sendData(u08 cbit);
 0002           ; void delay(u08 tick);
 0002           ; void port_init(void);
 0002           ; void time_init(void);
 0002           ; void delayms(u08 time);
 0002           ; void delays(u08 time1);
 0002           ; u16 speed_test(void);
 0002           ; void eeprom_write(u16 adrw,u08 add);
 0002           ; u08 eeprom_read(u16 adrr);
 0002           ; //u16 data;
 0002           ; u16 data_temp1;
 0002           ; u16 data_temp2;
 0002           ; //u08 number;
 0002           ; void main(void)
 0002           ; {
 0002                   .dbline 41
 0002           ;     u08 temp;
 0002           ;       //u08 temp1;
 0002           ;       u16 ep_temp;
 0002           ;       u08 speed1;
 0002           ;       u08 speed2;
 0002           ;       u08 ep_temp1;
 0002           ;       u08 ep_temp2;
 0002           ;       u16 speed_temp;
 0002           ;       u16 speed_temp1;
 0002           ;       u08 flag;
 0002           ;       u08 deciMeter;
 0002           ;       u16 timeBlock=111;
 0002 8FE6              ldi R24,111
 0004 90E0              ldi R25,0
 0006 9B83              std y+3,R25
 0008 8A83              std y+2,R24
 000A                   .dbline 46
 000A           ;       //u08 num_temp1;
 000A           ;       //u08 num_temp2;
 000A           ;       //u08 temp3;
 000A           ;       //u08 temp2;
 000A           ;       flag=0x00;
 000A AA24              clr R10
 000C                   .dbline 47
 000C           ;     port_init();                       //I/O口初始化
 000C 88D0              rcall _port_init
 000E                   .dbline 48
 000E           ;       time_init();
 000E 91D0              rcall _time_init
 0010                   .dbline 50
 0010           ;       //temp1=0;
 0010           ;       speed_temp=0;
 0010 0024              clr R0
 0012 1124              clr R1
 0014 1982              std y+1,R1
 0016 0882              std y+0,R0
 0018                   .dbline 51
 0018           ;     SREG|=0x80;
 0018 7894              bset 7
 001A                   .dbline 52
 001A           ;       NOP();
 001A 0000              nop
 001C                   .dbline 53
 001C           ;       NOP();
 001C 0000              nop
 001E                   .dbline 54
 001E           ;       NOP();
 001E 0000              nop
 0020                   .dbline 55
 0020           ;       NOP();
 0020 0000              nop
 0022                   .dbline 56
 0022           ;       NOP();
 0022 0000              nop
 0024                   .dbline 57
 0024           ;       NOP();
 0024 0000              nop
 0026                   .dbline 58
 0026           ;       NOP();
 0026 0000              nop
 0028                   .dbline 59
 0028           ;       NOP();
 0028 0000              nop
 002A 76C0              rjmp L3
 002C           L2:
 002C                   .dbline 61
 002C           ;       while(1)
 002C           ;       {        
 002C                   .dbline 62
 002C           ;               temp=0; 
 002C AA24              clr R10
 002E                   .dbline 65
 002E           ;               //delayms(10);
 002E           ;               //delays(50);
 002E           ;               delay(255);
 002E 0FEF              ldi R16,255
 0030 9FD0              rcall _delay
 0032                   .dbline 66
 0032           ;           delay(26);
 0032 0AE1              ldi R16,26
 0034 9DD0              rcall _delay
 0036           L5:
 0036                   .dbline 67
 0036           ;           while((0x10&0x10)&&(++timeBlock<896));//计算距离,将距离和数据对应
 0036           L6:
 0036                   .dbline 67
 0036 8A81              ldd R24,y+2
 0038 9B81              ldd R25,y+3
 003A 0196              adiw R24,1
 003C 1C01              movw R2,R24
 003E 3B82              std y+3,R3
 0040 2A82              std y+2,R2
 0042 8038              cpi R24,128
 0044 E3E0              ldi R30,3
 0046 9E07              cpc R25,R30
 0048 B0F3              brlo L5
 004A           X0:
 004A                   .dbline 68
 004A           ;           deciMeter=(u32)timeBlock*15*18/9300;
 004A 4424              clr R4
 004C 5524              clr R5
 004E 4FE0              ldi R20,15
 0050 50E0              ldi R21,0
 0052 60E0              ldi R22,0
 0054 70E0              ldi R23,0
 0056 5A92              st -y,R5
 0058 4A92              st -y,R4
 005A 3A92              st -y,R3
 005C 2A92              st -y,R2
 005E 8A01              movw R16,R20
 0060 9B01              movw R18,R22
 0062 00D0              rcall empy32u
 0064 42E1              ldi R20,18
 0066 50E0              ldi R21,0
 0068 60E0              ldi R22,0
 006A 70E0              ldi R23,0
 006C 3A93              st -y,R19
 006E 2A93              st -y,R18
 0070 1A93              st -y,R17
 0072 0A93              st -y,R16
 0074 8A01              movw R16,R20
 0076 9B01              movw R18,R22
 0078 00D0              rcall empy32u
 007A 44E5              ldi R20,84
 007C 54E2              ldi R21,36
 007E 60E0              ldi R22,0
 0080 70E0              ldi R23,0
 0082 7A93              st -y,R23
 0084 6A93              st -y,R22
 0086 5A93              st -y,R21
 0088 4A93              st -y,R20
 008A 00D0              rcall div32u
 008C C02E              mov R12,R16
 008E 03C0              rjmp L9
 0090           L8:
 0090                   .dbline 70
 0090           ;               while(temp<=100)
 0090           ;               {
 0090                   .dbline 71
 0090           ;                   sendData(0x37);
 0090 07E3              ldi R16,55
 0092 C2D0              rcall _sendData
 0094                   .dbline 72
 0094           ;                       temp++;
 0094 A394              inc R10
 0096                   .dbline 73
 0096           ;               }
 0096           L9:
 0096                   .dbline 69
 0096 84E6              ldi R24,100
 0098 8A15              cp R24,R10
 009A D0F7              brsh L8
 009C           X1:
 009C 23C0              rjmp L12
 009E           L11:
 009E                   .dbline 75
 009E           ;           while((PIND&0x20)&&(temp<=100))//判断按键是否按下1s,设定车速信号
 009E           ;               {
 009E                   .dbline 77
 009E           ;                   //temp=50;
 009E           ;                   delayms(10);                        
 009E 0AE0              ldi R16,10
 00A0 6DD0              rcall _delayms
 00A2                   .dbline 78
 00A2           ;                       temp++;              //speed=speed_test(); //测定车速信号
 00A2 A394              inc R10
 00A4                   .dbline 79
 00A4           ;                       if((PIND&0x20)&&(temp==99))
 00A4 4D9B              sbis 0x9,5
 00A6 1DC0              rjmp L14
 00A8           X2:
 00A8 8A2D              mov R24,R10
 00AA 8336              cpi R24,99
 00AC D1F4              brne L14
 00AE           X3:
 00AE                   .dbline 80
 00AE           ;                       {
 00AE                   .dbline 81
 00AE           ;                           speed_temp=data_temp2;   //测定车速信号
 00AE 20900000          lds R2,_data_temp2
 00B2 30900100          lds R3,_data_temp2+1
 00B6 3982              std y+1,R3
 00B8 2882              std y+0,R2
 00BA                   .dbline 82
 00BA           ;                           speed_temp1=speed_temp;
 00BA 6101              movw R12,R2
 00BC                   .dbline 83
 00BC           ;                               speed1=(u08)(speed_temp&0x00ff);
 00BC C101              movw R24,R2
 00BE 9070              andi R25,0
 00C0 E82E              mov R14,R24
 00C2                   .dbline 84
 00C2           ;                               speed2=(u08)(speed_temp1>>8);
 00C2 CD2C              mov R12,R13
 00C4 DD24              clr R13
 00C6                   .dbline 85
 00C6           ;                           SREG=0x00;
 00C6 2224              clr R2
 00C8 2FBE              out 0x3f,R2
 00CA                   .dbline 86
 00CA           ;                           eeprom_write(0x0025,speed1);//将用户设定车速写进EEPROM
 00CA 282F              mov R18,R24
 00CC 05E2              ldi R16,37
 00CE 10E0              ldi R17,0
 00D0 40D0              rcall _eeprom_write
 00D2                   .dbline 88
 00D2           ;                               //delayms(20);
 00D2           ;                               eeprom_write(0x0026,speed2);
 00D2 2C2D              mov R18,R12
 00D4 06E2              ldi R16,38
 00D6 10E0              ldi R17,0
 00D8 3CD0              rcall _eeprom_write
 00DA                   .dbline 89
 00DA           ;                               temp=111;
 00DA 8FE6              ldi R24,111
 00DC A82E              mov R10,R24
 00DE                   .dbline 90
 00DE           ;                               SREG|=0x80;
 00DE 7894              bset 7
 00E0                   .dbline 91
 00E0           ;                       }
 00E0 01C0              rjmp L15
 00E2           L14:

⌨️ 快捷键说明

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