📄 sudu.lis
字号:
.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 + -