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

📄 ad.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
字号:
                        .module ad.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\电流CAN网\ad.c
 0000                   .dbfunc e adreset _adreset fV
 0000           ;              i -> R20
                        .even
 0000           _adreset::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 7
 0004           ; #include "main.h"
 0004           ; 
 0004           ; unsigned char tempH,tempL;
 0004           ; int Zero_Data,Full_Data;
 0004           ; 
 0004           ; void adreset(void)                          
 0004           ; {
 0004                   .dbline 9
 0004           ; unsigned char i;
 0004           ; for(i=0;i<20;i++)                       
 0004 4427              clr R20
 0006 07C0              xjmp L11
 0008           L8:
 0008                   .dbline 10
 0008                   .dbline 11
 0008 0027              clr R16
 000A 0E940000          xcall _spi_write
 000E                   .dbline 12
 000E 0FEF              ldi R16,255
 0010 0E940000          xcall _spi_write
 0014                   .dbline 13
 0014           L9:
 0014                   .dbline 9
 0014 4395              inc R20
 0016           L11:
 0016                   .dbline 9
 0016 4431              cpi R20,20
 0018 B8F3              brlo L8
 001A                   .dbline -2
 001A           L7:
 001A 0E940000          xcall pop_gset1
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r i 20 c
 0020                   .dbend
 0020                   .dbfunc e init_ad _init_ad fV
 0020           ;           temp -> R20
                        .even
 0020           _init_ad::
 0020 0E940000          xcall push_gset1
 0024                   .dbline -1
 0024                   .dbline 17
 0024           ; {
 0024           ; spi_write(Com_Reg);
 0024           ; spi_write(0xff);
 0024           ; }
 0024           ; }
 0024           ; 
 0024           ; void init_ad(void)                     
 0024           ; { 
 0024                   .dbline 20
 0024           ;   unsigned char temp;
 0024           ;   
 0024           ;   adreset();
 0024 EDDF              xcall _adreset
 0026                   .dbline 22
 0026           ;  
 0026           ;   spi_write(RD_Id_Reg);                 
 0026 00E6              ldi R16,96
 0028 0E940000          xcall _spi_write
 002C                   .dbline 23
 002C           ;   temp=spi_read();
 002C 0E940000          xcall _spi_read
 0030 402F              mov R20,R16
 0032                   .dbline 25
 0032           ;   
 0032           ;   if((temp&0x0f)!=0x0a)
 0032 842F              mov R24,R20
 0034 8F70              andi R24,15
 0036 8A30              cpi R24,10
 0038 19F0              breq L13
 003A                   .dbline 26
 003A           ;   RESET;
 003A 0C940000          jmp 0x000
 003E 60C0              xjmp L14
 0040           L13:
 0040                   .dbline 28
 0040           ;   else
 0040           ;   {
 0040                   .dbline 29
 0040           ;   spi_write(WR_Con_Reg);                
 0040 00E1              ldi R16,16
 0042 0E940000          xcall _spi_write
 0046                   .dbline 30
 0046           ;   spi_write(ConHreg_u_mask|ConHreg_g1_mask);
 0046 02E1              ldi R16,18
 0048 0E940000          xcall _spi_write
 004C                   .dbline 31
 004C           ;   spi_write(ConLreg_buf_mask|ConLreg_buf_mask);
 004C 00E1              ldi R16,16
 004E 0E940000          xcall _spi_write
 0052                   .dbline 33
 0052           ;   
 0052           ;   spi_write(WR_Io_Reg);                
 0052 08E2              ldi R16,40
 0054 0E940000          xcall _spi_write
 0058                   .dbline 34
 0058           ;   spi_write(0x00);                     
 0058 0027              clr R16
 005A 0E940000          xcall _spi_write
 005E                   .dbline 36
 005E           ;   
 005E           ;   spi_write(WR_Mod_Reg);                
 005E 08E0              ldi R16,8
 0060 0E940000          xcall _spi_write
 0064                   .dbline 37
 0064           ;   spi_write(ModHreg_md2_mask);
 0064 00E8              ldi R16,128
 0066 0E940000          xcall _spi_write
 006A                   .dbline 38
 006A           ;   spi_write(ModLreg_fs1_mask);
 006A 02E0              ldi R16,2
 006C 0E940000          xcall _spi_write
 0070           L15:
 0070                   .dbline 41
 0070           L16:
 0070                   .dbline 40
 0070           ;   
 0070           ;    while(!PINB3)                        
 0070                   .dbline 42
 0070           ;    ;
 0070           ;   spi_write(RD_Off_Reg);
 0070 00E7              ldi R16,112
 0072 0E940000          xcall _spi_write
 0076                   .dbline 43
 0076           ;   tempH = spi_read();                     
 0076 0E940000          xcall _spi_read
 007A 00930500          sts _tempH,R16
 007E                   .dbline 44
 007E           ;   tempL = spi_read();                   
 007E 0E940000          xcall _spi_read
 0082 00930400          sts _tempL,R16
 0086                   .dbline 45
 0086           ;   Zero_Data = char_int(tempL,tempH);
 0086 20910500          lds R18,_tempH
 008A 5AD0              xcall _char_int
 008C 10930300          sts _Zero_Data+1,R17
 0090 00930200          sts _Zero_Data,R16
 0094                   .dbline 47
 0094           ;   
 0094           ;   spi_write(WR_Con_Reg);                  
 0094 00E1              ldi R16,16
 0096 0E940000          xcall _spi_write
 009A                   .dbline 48
 009A           ;   spi_write(ConHreg_u_mask);
 009A 00E1              ldi R16,16
 009C 0E940000          xcall _spi_write
 00A0                   .dbline 49
 00A0           ;   spi_write(ConLreg_ref_mask|ConLreg_buf_mask);
 00A0 00E9              ldi R16,144
 00A2 0E940000          xcall _spi_write
 00A6                   .dbline 51
 00A6           ;   
 00A6           ;   spi_write(WR_Mod_Reg);                    
 00A6 08E0              ldi R16,8
 00A8 0E940000          xcall _spi_write
 00AC                   .dbline 52
 00AC           ;   spi_write(ModHreg_md2_mask|ModHreg_md0_mask);
 00AC 00EA              ldi R16,160
 00AE 0E940000          xcall _spi_write
 00B2                   .dbline 53
 00B2           ;   spi_write(ModLreg_fs1_mask);
 00B2 02E0              ldi R16,2
 00B4 0E940000          xcall _spi_write
 00B8           L18:
 00B8                   .dbline 56
 00B8           L19:
 00B8                   .dbline 55
 00B8                   .dbline 57
 00B8 08E7              ldi R16,120
 00BA 0E940000          xcall _spi_write
 00BE                   .dbline 58
 00BE 0E940000          xcall _spi_read
 00C2 00930500          sts _tempH,R16
 00C6                   .dbline 59
 00C6 0E940000          xcall _spi_read
 00CA 00930400          sts _tempL,R16
 00CE                   .dbline 60
 00CE 20910500          lds R18,_tempH
 00D2 36D0              xcall _char_int
 00D4 10930100          sts _Full_Data+1,R17
 00D8 00930000          sts _Full_Data,R16
 00DC                   .dbline 62
 00DC 00E1              ldi R16,16
 00DE 0E940000          xcall _spi_write
 00E2                   .dbline 63
 00E2 00E1              ldi R16,16
 00E4 0E940000          xcall _spi_write
 00E8                   .dbline 64
 00E8 00E9              ldi R16,144
 00EA 0E940000          xcall _spi_write
 00EE                   .dbline 66
 00EE 08E0              ldi R16,8
 00F0 0E940000          xcall _spi_write
 00F4                   .dbline 67
 00F4 0027              clr R16
 00F6 0E940000          xcall _spi_write
 00FA                   .dbline 68
 00FA 02E0              ldi R16,2
 00FC 0E940000          xcall _spi_write
 0100                   .dbline 69
 0100           L14:
 0100                   .dbline -2
 0100           L12:
 0100 0E940000          xcall pop_gset1
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbsym r temp 20 c
 0106                   .dbend
 0106                   .dbfunc e conves_ad _conves_ad fV
 0106           ;             tt -> R20
                        .even
 0106           _conves_ad::
 0106 0E940000          xcall push_gset1
 010A                   .dbline -1
 010A                   .dbline 75
 010A           ;   
 010A           ;    while(!PINB3)                       
 010A           ;    ;
 010A           ;   spi_write(RD_Ful_Reg);
 010A           ;   tempH = spi_read();                     
 010A           ;   tempL = spi_read();                  
 010A           ;   Full_Data = char_int(tempL,tempH);
 010A           ;   
 010A           ;   spi_write(WR_Con_Reg);                
 010A           ;   spi_write(ConHreg_u_mask);
 010A           ;   spi_write(ConLreg_ref_mask|ConLreg_buf_mask);
 010A           ;    
 010A           ;   spi_write(WR_Mod_Reg);                
 010A           ;   spi_write(0x00); 
 010A           ;   spi_write(ModLreg_fs1_mask);
 010A           ;  }
 010A           ; }
 010A           ; 
 010A           ; 
 010A           ; 
 010A           ; void conves_ad(void)                      
 010A           ; {
 010A                   .dbline 78
 010A           ;  unsigned char tt;
 010A           ;  
 010A           ;   spi_write(RD_Id_Reg);                  
 010A 00E6              ldi R16,96
 010C 0E940000          xcall _spi_write
 0110                   .dbline 79
 0110           ;   tt = spi_read();
 0110 0E940000          xcall _spi_read
 0114 402F              mov R20,R16
 0116                   .dbline 81
 0116           ;   
 0116           ;   if((tt&0x0f)!= 0x0a)
 0116 842F              mov R24,R20
 0118 8F70              andi R24,15
 011A 8A30              cpi R24,10
 011C 19F0              breq L25
 011E                   .dbline 82
 011E           ;   {
 011E                   .dbline 83
 011E           ;   RESET;                                  
 011E 0C940000          jmp 0x000
 0122                   .dbline 84
 0122           ;   }
 0122 0BC0              xjmp L23
 0124           X0:
 0124                   .dbline 86
 0124           ;   else
 0124           ;   {
 0124           L24:
 0124                   .dbline 88
 0124           L25:
 0124                   .dbline 87
 0124                   .dbline 89
 0124 08E5              ldi R16,88
 0126 0E940000          xcall _spi_write
 012A                   .dbline 90
 012A 0E940000          xcall _spi_read
 012E 00930500          sts _tempH,R16
 0132                   .dbline 91
 0132 0E940000          xcall _spi_read
 0136 00930400          sts _tempL,R16
 013A                   .dbline 92
 013A           L23:
 013A                   .dbline -2
 013A           L21:
 013A 0E940000          xcall pop_gset1
 013E                   .dbline 0 ; func end
 013E 0895              ret
 0140                   .dbsym r tt 20 c
 0140                   .dbend
 0140                   .dbfunc e char_int _char_int fi
 0140           ;             tt -> R20,R21
 0140           ;           data -> R20,R21
 0140           ;          datah -> R18
 0140           ;          datal -> R16
                        .even
 0140           _char_int::
 0140 0E940000          xcall push_gset1
 0144                   .dbline -1
 0144                   .dbline 96
 0144           ;   while(!PINB3)                          
 0144           ;            ;
 0144           ;   spi_write(RD_Dat_Reg);                    
 0144           ;   tempH = spi_read();                     
 0144           ;   tempL = spi_read();                   
 0144           ;     }
 0144           ;   }
 0144           ;   
 0144           ;  unsigned int char_int(uchar datal,uchar datah)
 0144           ; {
 0144                   .dbline 99
 0144           ;    int data,tt;
 0144           ;    
 0144           ;    tt = datah; 
 0144 422F              mov R20,R18
 0146 5527              clr R21
 0148                   .dbline 100
 0148           ;    data = (tt<<8);
 0148 542F              mov R21,R20
 014A 4427              clr R20
 014C                   .dbline 101
 014C           ;    data =  data + datal;
 014C 202E              mov R2,R16
 014E 3324              clr R3
 0150 420D              add R20,R2
 0152 531D              adc R21,R3
 0154                   .dbline 102
 0154           ;    return data;
 0154 8A01              movw R16,R20
 0156                   .dbline -2
 0156           L27:
 0156 0E940000          xcall pop_gset1
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r tt 20 I
 015C                   .dbsym r data 20 I
 015C                   .dbsym r datah 18 c
 015C                   .dbsym r datal 16 c
 015C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\电流CAN网\ad.c
 0000           _Full_Data::
 0000                   .blkb 2
 0002                   .dbsym e Full_Data _Full_Data I
 0002           _Zero_Data::
 0002                   .blkb 2
 0004                   .dbsym e Zero_Data _Zero_Data I
 0004           _tempL::
 0004                   .blkb 1
 0005                   .dbsym e tempL _tempL c
 0005           _tempH::
 0005                   .blkb 1
 0006                   .dbsym e tempH _tempH c

⌨️ 快捷键说明

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