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

📄 sudu.lis

📁 用AVR单片机实现脉冲采集源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module sudu.c
                        .area data(ram, con, rel)
 0000           _ndata::
 0000                   .blkb 2
                        .area idata
 0000 FB86              .byte 251,134
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 5500              .byte 'U,0
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 0000              .byte 0,0
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 0000              .byte 0,0
                        .area data(ram, con, rel)
 0008                   .dbfile sudu.c
 0008                   .dbsym e ndata _ndata A[8:8]c
                        .area text(rom, con, rel)
 0000                   .dbfile sudu.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              j -> R20
 0000           ;              x -> R16
                        .even
 0000           _delay::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 58
 0002           ; /**********************************/
 0002           ; /*        汽车转速测量程序
 0002           ; /*           8.24,2004
 0002           ; /*        Writed by Wuxw
 0002           ; /*    Automation Depart. of WHUT
 0002           ; /*          芯片:ATMEGA8L
 0002           ; /*          晶振:2MHz
 0002           ; /*        
 0002           ; /*
 0002           ; /***********************************/
 0002           ; /*    脉冲输入接在INT0端口
 0002           ; /*    
 0002           ; /*    输出n,单位r/50ms,可用来计算车轮转速
 0002           ; /*
 0002           ; /*    num----脉冲计数,可用来计算里程    
 0002           ; /*
 0002           ; /*    485输出格式:FB-86-n-numLL-numLH-numHL-numHH
 0002           ; /*    
 0002           ; /*    numLL-numLH-numHL-numHH分别为num的四个字节(L为低字节,H为高字节)
 0002           ; /*
 0002           ; /*    串口485通讯波特率baud = 9600
 0002           ; /*    
 0002           ; /*    在受到正确地址(0x32)和命令(0xc5)后,发送数据
 0002           ; /*
 0002           ; /***********************************/
 0002           ; 
 0002           ; 
 0002           ; 
 0002           ; #include "iom8v.h"  
 0002           ; #include "macros.h"
 0002           ; #define uchar unsigned char
 0002           ; #define uint unsigned int
 0002           ; #define ulong unsigned long
 0002           ; 
 0002           ; #define E2ADDRLL 0x000         //脉冲计数存放地址
 0002           ; #define E2ADDRLH 0x001    
 0002           ; #define E2ADDRHL 0x002      
 0002           ; #define E2ADDRHH 0x003     
 0002           ; //#define osccal 0x9d//内部RC 校正常数
 0002           ; 
 0002           ; //#define osccal 0xa4       //内部RC校正常数
 0002           ; #define fosc 8000000      //晶振8MHZ
 0002           ; #define baud 9600         //串口通讯波特率
 0002           ; #define TIME50ms 0xae     //定时50ms的初装值
 0002           ; 
 0002           ; #define osccal_addr 0x1ff
 0002           ; 
 0002           ; uint m,n,k;
 0002           ; ulong num;      //脉冲计数
 0002           ; uchar numLL,numLH,numHL,numHH,K,nLL,nLH;
 0002           ; uchar flag_receive,ndata[8]={0xFB,0x86,0x55,0x00,0x00,0x00,0x00,0x00};
 0002           ; uchar i,cx,xxx[3];
 0002           ; uchar data_receive[3];
 0002           ; 
 0002           ; 
 0002           ; //最小延时单位,约16微秒
 0002           ; void delay(uchar x)   
 0002           ; {   uchar j;
 0002 05C0              rjmp L3
 0004           L2:
 0004                   .dbline 60
 0004           ;     while(x-->0)
 0004           ;       {
 0004                   .dbline 61
 0004           ;        for(j=0;j<5;j++)
 0004 4427              clr R20
 0006 01C0              rjmp L8
 0008           L5:
 0008                   .dbline 62
 0008                   .dbline 62
 0008                   .dbline 62
 0008           L6:
 0008                   .dbline 61
 0008 4395              inc R20
 000A           L8:
 000A                   .dbline 61
 000A 4530              cpi R20,5
 000C E8F3              brlo L5
 000E                   .dbline 63
 000E           L3:
 000E                   .dbline 59
 000E 202E              mov R2,R16
 0010 3324              clr R3
 0012 0150              subi R16,1
 0014 4424              clr R4
 0016 4214              cp R4,R2
 0018 A8F3              brlo L2
 001A                   .dbline -2
 001A                   .dbline 64
 001A           ;          {;}
 001A           ;     }
 001A           ; }
 001A           L1:
 001A 00D0              rcall pop_gset1
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbsym r j 20 c
 001E                   .dbsym r x 16 c
 001E                   .dbend
 001E                   .dbfunc e decompose _decompose fV
                        .even
 001E           _decompose::
 001E                   .dbline -1
 001E                   .dbline 67
 001E           ; 
 001E           ; void decompose(void)
 001E           ; {
 001E                   .dbline 68
 001E           ;     numLL = num;
 001E 40901200          lds R4,_num+2
 0022 50901300          lds R5,_num+2+1
 0026 20901000          lds R2,_num
 002A 30901100          lds R3,_num+1
 002E 20920F00          sts _numLL,R2
 0032                   .dbline 69
 0032           ;       num=(num>>8);
 0032 88E0              ldi R24,8
 0034 90E0              ldi R25,0
 0036 8A93              st -y,R24
 0038 8101              movw R16,R2
 003A 9201              movw R18,R4
 003C 00D0              rcall lsr32
 003E 10931100          sts _num+1,R17
 0042 00931000          sts _num,R16
 0046 30931300          sts _num+2+1,R19
 004A 20931200          sts _num+2,R18
 004E                   .dbline 70
 004E           ;       numLH= num;
 004E 1801              movw R2,R16
 0050 2901              movw R4,R18
 0052 20920E00          sts _numLH,R2
 0056                   .dbline 71
 0056           ;       num= (num>>8);
 0056 88E0              ldi R24,8
 0058 90E0              ldi R25,0
 005A 8A93              st -y,R24
 005C 00D0              rcall lsr32
 005E 10931100          sts _num+1,R17
 0062 00931000          sts _num,R16
 0066 30931300          sts _num+2+1,R19
 006A 20931200          sts _num+2,R18
 006E                   .dbline 72
 006E           ;       numHL=num;
 006E 1801              movw R2,R16
 0070 2901              movw R4,R18
 0072 20920D00          sts _numHL,R2
 0076                   .dbline 73
 0076           ;       num=(num>>8);
 0076 88E0              ldi R24,8
 0078 90E0              ldi R25,0
 007A 8A93              st -y,R24
 007C 00D0              rcall lsr32
 007E 10931100          sts _num+1,R17
 0082 00931000          sts _num,R16
 0086 30931300          sts _num+2+1,R19
 008A 20931200          sts _num+2,R18
 008E                   .dbline 74
 008E           ;       numHH=num;
 008E 1801              movw R2,R16
 0090 2901              movw R4,R18
 0092 20920C00          sts _numHH,R2
 0096                   .dbline -2
 0096                   .dbline 79
 0096           ;       
 0096           ;       //nLL = n;
 0096           ;       //n=(n>>8);
 0096           ;       //nLH= n;
 0096           ; }
 0096           L9:
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbend
 0098                   .dbfunc e combination _combination fV
                        .even
 0098           _combination::
 0098 00D0              rcall push_gset2
 009A                   .dbline -1
 009A                   .dbline 82
 009A           ; 
 009A           ; void combination(void)
 009A           ; {
 009A                   .dbline 83
 009A           ;     num = 0;
 009A 40E0              ldi R20,0
 009C 50E0              ldi R21,0
 009E 60E0              ldi R22,0
 00A0 70E0              ldi R23,0
 00A2 50931100          sts _num+1,R21
 00A6 40931000          sts _num,R20
 00AA 70931300          sts _num+2+1,R23
 00AE 60931200          sts _num+2,R22
 00B2                   .dbline 84
 00B2           ;     num = numHH;
 00B2 20900C00          lds R2,_numHH
 00B6 3324              clr R3
 00B8 4424              clr R4
 00BA 5524              clr R5
 00BC 30921100          sts _num+1,R3
 00C0 20921000          sts _num,R2
 00C4 50921300          sts _num+2+1,R5
 00C8 40921200          sts _num+2,R4
 00CC                   .dbline 85
 00CC           ;       num = num<<8;
 00CC 88E0              ldi R24,8
 00CE 90E0              ldi R25,0
 00D0 40901200          lds R4,_num+2
 00D4 50901300          lds R5,_num+2+1
 00D8 20901000          lds R2,_num
 00DC 30901100          lds R3,_num+1
 00E0 8A93              st -y,R24
 00E2 8101              movw R16,R2
 00E4 9201              movw R18,R4
 00E6 00D0              rcall lsl32
 00E8 10931100          sts _num+1,R17
 00EC 00931000          sts _num,R16
 00F0 30931300          sts _num+2+1,R19
 00F4 20931200          sts _num+2,R18
 00F8                   .dbline 86
 00F8           ;       num += numHL;
 00F8 20900D00          lds R2,_numHL
 00FC 3324              clr R3
 00FE 4424              clr R4
 0100 5524              clr R5
 0102 3801              movw R6,R16
 0104 4901              movw R8,R18
 0106 620C              add R6,R2
 0108 731C              adc R7,R3
 010A 841C              adc R8,R4
 010C 951C              adc R9,R5
 010E 70921100          sts _num+1,R7
 0112 60921000          sts _num,R6
 0116 90921300          sts _num+2+1,R9
 011A 80921200          sts _num+2,R8
 011E                   .dbline 87
 011E           ;       num = num<<8;
 011E 88E0              ldi R24,8
 0120 90E0              ldi R25,0
 0122 8A93              st -y,R24
 0124 8301              movw R16,R6
 0126 9401              movw R18,R8
 0128 00D0              rcall lsl32
 012A 10931100          sts _num+1,R17
 012E 00931000          sts _num,R16
 0132 30931300          sts _num+2+1,R19
 0136 20931200          sts _num+2,R18
 013A                   .dbline 88
 013A           ;       num += numLH;
 013A 20900E00          lds R2,_numLH
 013E 3324              clr R3
 0140 4424              clr R4
 0142 5524              clr R5
 0144 3801              movw R6,R16
 0146 4901              movw R8,R18
 0148 620C              add R6,R2
 014A 731C              adc R7,R3
 014C 841C              adc R8,R4
 014E 951C              adc R9,R5
 0150 70921100          sts _num+1,R7
 0154 60921000          sts _num,R6
 0158 90921300          sts _num+2+1,R9
 015C 80921200          sts _num+2,R8
 0160                   .dbline 89
 0160           ;       num = num<<8;
 0160 88E0              ldi R24,8
 0162 90E0              ldi R25,0
 0164 8A93              st -y,R24
 0166 8301              movw R16,R6
 0168 9401              movw R18,R8
 016A 00D0              rcall lsl32
 016C 10931100          sts _num+1,R17
 0170 00931000          sts _num,R16
 0174 30931300          sts _num+2+1,R19
 0178 20931200          sts _num+2,R18
 017C                   .dbline 90
 017C           ;       num += numLL;
 017C 20900F00          lds R2,_numLL
 0180 3324              clr R3
 0182 4424              clr R4
 0184 5524              clr R5
 0186 3801              movw R6,R16
 0188 4901              movw R8,R18
 018A 620C              add R6,R2
 018C 731C              adc R7,R3
 018E 841C              adc R8,R4
 0190 951C              adc R9,R5
 0192 70921100          sts _num+1,R7
 0196 60921000          sts _num,R6
 019A 90921300          sts _num+2+1,R9
 019E 80921200          sts _num+2,R8
 01A2                   .dbline -2
 01A2                   .dbline 97
 01A2           ;       
 01A2           ;       //n = 0;
 01A2           ;     //n= nLH;
 01A2           ;       //n = n<<8;
 01A2           ;       //n += nLL;
 01A2           ;       
 01A2           ; }

⌨️ 快捷键说明

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