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

📄 m128.lis

📁 ewts avr驱动程序 角速度传感器 104为秒
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module m128.c
                        .area lit(rom, con, rel)
 0000           _DisV::
 0000 563A00            .byte 'V,58,0
 0003                   .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128.c
 0003                   .dbsym e DisV _DisV A[3:3]kc
 0003           _DisP::
 0003 503A00            .byte 'P,58,0
 0006                   .dbsym e DisP _DisP A[3:3]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128.c
 0000                   .dbfunc e asc_tran1 _asc_tran1 fV
 0000           ;          asc_p -> y+4
 0000           ;              y -> R20
 0000           ;              x -> R22
                        .even
 0000           _asc_tran1::
 0000 0E940000          xcall push_gset2
 0004 422F              mov R20,R18
 0006 602F              mov R22,R16
 0008                   .dbline -1
 0008                   .dbline 34
 0008           ; #include <iom128v.h>
 0008           ; #define uchar unsigned char
 0008           ; #define uint unsigned int
 0008           ; #define LcdBus PORTA
 0008           ; #define BIT(i) (1<<i)
 0008           ; #define rs 2 //LCD端口定义
 0008           ; #define rw 3
 0008           ; #define en 4 
 0008           ; 
 0008           ; const char DisV[]={"V:"} ;//灵敏度
 0008           ; const char DisP[]={"P:"} ;//精确度
 0008           ;  
 0008           ; void LcdIni(void) ;
 0008           ; void WrOp(uchar dat) ;
 0008           ; void WrDat(uchar dat) ;
 0008           ; void ChkBusy(void) ;
 0008           ; void DisText(uchar addr,uchar *text) ;
 0008           ; void DisTextConst(uchar addr,uchar const *text) ;
 0008           ; void ShowNum(uchar addr,uint num) ;   //在addr处显示数字num
 0008           ; int AdcVal(uchar n) ;
 0008           ; void delayms(uint n) ;
 0008           ; int AdcValPro(uchar n) ;
 0008           ; char BCD[6] ;   //十位二进制的显示码分别是千百十个位的显示
 0008           ; int Adc[3] ;    //存放Adc转换后的值
 0008           ; 
 0008           ; 
 0008           ; 
 0008           ; 
 0008           ; 
 0008           ; 
 0008           ; /*          传送ASCII字母到LCD            */
 0008           ; /*          x:0x00~0x0f y:0~64            */  
 0008           ; void asc_tran1(unsigned char x,unsigned char y,unsigned char *asc_p)
 0008           ;     {
 0008                   .dbline 35
 0008           ;        x+=4;
 0008 6C5F              subi R22,252    ; addi 4
 000A                   .dbline 37
 000A           ;        //while((*asc_p)!=0)
 000A           ;           {
 000A                   .dbline 38
 000A           ;                ocmj_write(0xf1);
 000A 01EF              ldi R16,241
 000C 10E0              ldi R17,0
 000E 0E940000          xcall _ocmj_write
 0012                   .dbline 39
 0012           ;                ocmj_write(x);
 0012 062F              mov R16,R22
 0014 1127              clr R17
 0016 0E940000          xcall _ocmj_write
 001A                   .dbline 40
 001A           ;                ocmj_write(y);
 001A 042F              mov R16,R20
 001C 1127              clr R17
 001E 0E940000          xcall _ocmj_write
 0022                   .dbline 41
 0022           ;                ocmj_write(*asc_p);
 0022 EC81              ldd R30,y+4
 0024 FD81              ldd R31,y+5
 0026 0081              ldd R16,z+0
 0028 1127              clr R17
 002A 0E940000          xcall _ocmj_write
 002E                   .dbline 42
 002E           ;                asc_p++;
 002E 8C81              ldd R24,y+4
 0030 9D81              ldd R25,y+5
 0032 0196              adiw R24,1
 0034 9D83              std y+5,R25
 0036 8C83              std y+4,R24
 0038                   .dbline 43
 0038           ;                if (x<0x13) 
 0038 6331              cpi R22,19
 003A 10F4              brsh L2
 003C                   .dbline 44
 003C           ;                   x++;
 003C 6395              inc R22
 003E 02C0              xjmp L3
 0040           L2:
 0040                   .dbline 46
 0040           ;                else
 0040           ;                  {
 0040                   .dbline 47
 0040           ;                   x=0x04;
 0040 64E0              ldi R22,4
 0042                   .dbline 48
 0042           ;                       y+=8;               
 0042 485F              subi R20,248    ; addi 8
 0044                   .dbline 49
 0044           ;                  }    
 0044           L3:
 0044                   .dbline 50
 0044           ;               }       
 0044                   .dbline -2
 0044           L1:
 0044 0E940000          xcall pop_gset2
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym l asc_p 4 pc
 004A                   .dbsym r y 20 c
 004A                   .dbsym r x 22 c
 004A                   .dbend
                        .area lit(rom, con, rel)
 0006           L5:
 0006 3031              .byte 48,49
 0008 3233              .byte 50,51
 000A 3435              .byte 52,53
 000C 3637              .byte 54,55
 000E 3839              .byte 56,57
                        .area text(rom, con, rel)
 004A                   .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128.c
 004A                   .dbfunc e main _main fV
 004A           ;           code -> y+2
 004A           ;              a -> R20,R21
 004A           ;              i -> R22,R23
 004A           ;              x -> R10,R11
                        .even
 004A           _main::
 004A 2C97              sbiw R28,12
 004C                   .dbline -1
 004C                   .dbline 53
 004C           ;       }
 004C           ; void main(void)
 004C           ; {int x=0,a=0,i=0;
 004C                   .dbline 53
 004C AA24              clr R10
 004E BB24              clr R11
 0050                   .dbline 53
 0050 4427              clr R20
 0052 5527              clr R21
 0054                   .dbline 53
 0054 6627              clr R22
 0056 7727              clr R23
 0058                   .dbline 54
 0058           ; char code[]={'0','1','2','3','4','5','6','7','8','9',};
 0058 80E0              ldi R24,<L5
 005A 90E0              ldi R25,>L5
 005C FE01              movw R30,R28
 005E 3296              adiw R30,2
 0060 0AE0              ldi R16,10
 0062 10E0              ldi R17,0
 0064 FA93              st -y,R31
 0066 EA93              st -y,R30
 0068 9A93              st -y,R25
 006A 8A93              st -y,R24
 006C 0E940000          xcall asgncblk
 0070                   .dbline 55
 0070           ; ocmj_init();//初始化  
 0070 0E940000          xcall _ocmj_init
 0074                   .dbline 56
 0074           ; ocmj_write(0xf4);//清屏
 0074 04EF              ldi R16,244
 0076 10E0              ldi R17,0
 0078 0E940000          xcall _ocmj_write
 007C                   .dbline 57
 007C           ; hz_tran(3,0,"数模转换");//传送内部汉字
 007C 80E0              ldi R24,<L6
 007E 90E0              ldi R25,>L6
 0080 9983              std y+1,R25
 0082 8883              std y+0,R24
 0084 2227              clr R18
 0086 3327              clr R19
 0088 03E0              ldi R16,3
 008A 10E0              ldi R17,0
 008C 0E940000          xcall _hz_tran
 0090 25C0              xjmp L8
 0092           L7:
 0092                   .dbline 59
 0092           ;   while(1)
 0092           ;   {
 0092                   .dbline 61
 0092           ;   
 0092           ;               x=(int )AdcVal(1);
 0092 01E0              ldi R16,1
 0094 26D0              xcall _AdcVal
 0096 5801              movw R10,R16
 0098                   .dbline 62
 0098           ;               for(i=0;i<7;i++)
 0098 6627              clr R22
 009A 7727              clr R23
 009C           L10:
 009C                   .dbline 63
 009C                   .dbline 63
 009C 2AE0              ldi R18,10
 009E 30E0              ldi R19,0
 00A0 8501              movw R16,R10
 00A2 0E940000          xcall mod16s
 00A6 A801              movw R20,R16
 00A8                   .dbline 64
 00A8 CE01              movw R24,R28
 00AA 0296              adiw R24,2
 00AC 1A01              movw R2,R20
 00AE 280E              add R2,R24
 00B0 391E              adc R3,R25
 00B2 3982              std y+1,R3
 00B4 2882              std y+0,R2
 00B6 22E3              ldi R18,50
 00B8 0AE0              ldi R16,10
 00BA 061B              sub R16,R22
 00BC 170B              sbc R17,R23
 00BE A0DF              xcall _asc_tran1
 00C0                   .dbline 65
 00C0 2AE0              ldi R18,10
 00C2 30E0              ldi R19,0
 00C4 8501              movw R16,R10
 00C6 0E940000          xcall div16s
 00CA 5801              movw R10,R16
 00CC                   .dbline 66
 00CC           L11:
 00CC                   .dbline 62
 00CC 6F5F              subi R22,255  ; offset = 1
 00CE 7F4F              sbci R23,255
 00D0                   .dbline 62
 00D0 6730              cpi R22,7
 00D2 E0E0              ldi R30,0
 00D4 7E07              cpc R23,R30
 00D6 14F3              brlt L10
 00D8                   .dbline 67
 00D8 AA24              clr R10
 00DA BB24              clr R11
 00DC                   .dbline 72
 00DC           L8:
 00DC                   .dbline 58
 00DC DACF              xjmp L7
 00DE           X0:
 00DE                   .dbline -2
 00DE           L4:
 00DE 2C96              adiw R28,12
 00E0                   .dbline 0 ; func end
 00E0 0895              ret
 00E2                   .dbsym l code 2 A[10:10]c
 00E2                   .dbsym r a 20 I
 00E2                   .dbsym r i 22 I
 00E2                   .dbsym r x 10 I
 00E2                   .dbend
 00E2                   .dbfunc e AdcVal _AdcVal fI
 00E2           ;              k -> R22
 00E2           ;              i -> R12
 00E2           ;            tmp -> R10,R11
 00E2           ;              n -> R20
                        .even
 00E2           _AdcVal::
 00E2 0E940000          xcall push_gset4
 00E6 402F              mov R20,R16
 00E8                   .dbline -1
 00E8                   .dbline 76
 00E8           ;               {a=x%10;
 00E8           ;                asc_tran1(10-i,50,& code[a]);
 00E8           ;                x=x/10;
 00E8           ;               }
 00E8           ;               x=0;
 00E8           ; /* ADCSRA = 0x00; //disable adc
 00E8           ;  ADMUX = 0x00; //select adc input 0
 00E8           ;  ACSR  = 0x80;
 00E8           ;  ADCSRA = 0x86;*/
 00E8           ;   }
 00E8           ; }
 00E8           ; 
 00E8           ; int AdcVal(uchar n)
 00E8           ; {//软件滤波
 00E8                   .dbline 78
 00E8           ;  uchar i,k ;
 00E8           ;  uint tmp=0 ;
 00E8 AA24              clr R10
 00EA BB24              clr R11
 00EC                   .dbline 79
 00EC           ;  for(i=0 ;i<20 ;i++)
 00EC CC24              clr R12
 00EE 09C0              xjmp L18
 00F0           L15:
 00F0                   .dbline 80
 00F0 042F              mov R16,R20
 00F2 51D0              xcall _AdcValPro
 00F4 1501              movw R2,R10
 00F6 200E              add R2,R16
 00F8 311E              adc R3,R17
 00FA 3694              lsr R3
 00FC 2794              ror R2
 00FE 5101              movw R10,R2
 0100           L16:
 0100                   .dbline 79
 0100 C394              inc R12
 0102           L18:
 0102                   .dbline 79
 0102 8C2D              mov R24,R12
 0104 8431              cpi R24,20
 0106 A0F3              brlo L15
 0108                   .dbline 81
 0108           ;   tmp=(tmp+AdcValPro(n))/2 ;
 0108           ;  k=tmp>Adc[n] ? (tmp-Adc[n]):(Adc[n]-tmp) ;

⌨️ 快捷键说明

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