📄 ad.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 + -