📄 7135.lis
字号:
0150 0001 .byte 0,1
0152 0101 .byte 1,1
0154 0101 .byte 1,1
0156 0101 .byte 1,1
0158 .dbsym s fuhao _fuhao A[16:16]kc
0158 L2:
0158 0000 .word 0
015A 0000 .word 0
015C 0000 .word 0
015E 0000 .word 0
.area text(rom, con, rel)
0000 .dbfile D:\zhangyu\H2test\program/lcd.h
0000 .dbfile D:\zhangyu\H2test\program\7135.c
0000 .dbfunc e display7135 _display7135 fV
0000 ; adc -> R20,R21
0000 ; m -> R22,R23
0000 ; n -> R10,R11
0000 ; E -> y+1
.even
0000 _display7135::
0000 0E940000 xcall push_gset3
0004 2997 sbiw R28,9
0006 .dbline -1
0006 .dbline 22
0006 ; /*-------------------------------------------------------------*-
0006 ; File name: 7135.c
0006 ; Description:本模块为电动势模块,其功能为获得原电池的电动势。
0006 ; Function List:
0006 ; 1.void timer1_capt_isr(void) //中断函数,busy信号的下降沿产生中断信号
0006 ; 2.void display7135() //读取并显示7135的数据
0006 ;
0006 ; -----------------------------------------------------------------
0006 ; 电动势模块
0006 ; -*--------------------------------------------------------------*/
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "7135.h"
0006 ; #include "lcd.h"
0006 ; #include "main.h"
0006 ; #include "6675.h"
0006 ;
0006 ; extern unsigned char endflag;
0006 ; extern unsigned int pulse;
0006 ;
0006 ; void display7135(void)
0006 ; {
0006 .dbline 23
0006 ; unsigned int E[4]={0,0,0,0};
0006 80E0 ldi R24,<L2
0008 90E0 ldi R25,>L2
000A FE01 movw R30,R28
000C 3196 adiw R30,1
000E 08E0 ldi R16,8
0010 10E0 ldi R17,0
0012 FA93 st -y,R31
0014 EA93 st -y,R30
0016 9A93 st -y,R25
0018 8A93 st -y,R24
001A 0E940000 xcall asgncblk
001E .dbline 24
001E ; unsigned int n=0,m=0;
001E AA24 clr R10
0020 BB24 clr R11
0022 .dbline 24
0022 6627 clr R22
0024 7727 clr R23
0026 .dbline 27
0026 ; unsigned int adc;
0026 ;
0026 ; TCNT1=0;
0026 2224 clr R2
0028 3324 clr R3
002A 3DBC out 0x2d,R3
002C 2CBC out 0x2c,R2
002E .dbline 28
002E ; TCCR1A=0x00;
002E 2FBC out 0x2f,R2
0030 .dbline 29
0030 ; TCCR1B=0x43; //上升沿捕获,64分频
0030 83E4 ldi R24,67
0032 8EBD out 0x2e,R24
0034 .dbline 30
0034 ; TIMSK=0x24; //timer1溢出中断使能,捕获中断使能
0034 84E2 ldi R24,36
0036 89BF out 0x39,R24
0038 .dbline 31
0038 ; SEI();
0038 7894 sei
003A .dbline 33
003A ;
003A ; Delay10ms(10);
003A 0AE0 ldi R16,10
003C 0E940000 xcall _Delay10ms
0040 L3:
0040 .dbline 35
0040 L4:
0040 .dbline 35
0040 ;
0040 ; while(!endflag);
0040 20900000 lds R2,_endflag
0044 2220 tst R2
0046 E1F3 breq L3
0048 .dbline 36
0048 ; adc=(pulse>>1)-10001; //此值即为电压值,共5位,小数点后有1位,前面4位,单位为MV
0048 40910000 lds R20,_pulse
004C 50910100 lds R21,_pulse+1
0050 5695 lsr R21
0052 4795 ror R20
0054 4151 subi R20,17
0056 5742 sbci R21,39
0058 .dbline 38
0058 ;
0058 ; m=adc*10;
0058 0AE0 ldi R16,10
005A 10E0 ldi R17,0
005C 9A01 movw R18,R20
005E 0E940000 xcall empy16s
0062 B801 movw R22,R16
0064 .dbline 39
0064 ; E[0]=m/1000;
0064 28EE ldi R18,1000
0066 33E0 ldi R19,3
0068 0E940000 xcall div16u
006C 1A83 std y+2,R17
006E 0983 std y+1,R16
0070 .dbline 40
0070 ; n=m-E[0]*1000;
0070 9801 movw R18,R16
0072 08EE ldi R16,1000
0074 13E0 ldi R17,3
0076 0E940000 xcall empy16s
007A 5B01 movw R10,R22
007C A01A sub R10,R16
007E B10A sbc R11,R17
0080 .dbline 41
0080 ; E[1]=n/100;
0080 24E6 ldi R18,100
0082 30E0 ldi R19,0
0084 8501 movw R16,R10
0086 0E940000 xcall div16u
008A 1C83 std y+4,R17
008C 0B83 std y+3,R16
008E .dbline 42
008E ; n=n-E[1]*100;
008E 9801 movw R18,R16
0090 04E6 ldi R16,100
0092 10E0 ldi R17,0
0094 0E940000 xcall empy16s
0098 A01A sub R10,R16
009A B10A sbc R11,R17
009C .dbline 43
009C ; E[2]=n/10;
009C 2AE0 ldi R18,10
009E 30E0 ldi R19,0
00A0 8501 movw R16,R10
00A2 0E940000 xcall div16u
00A6 1E83 std y+6,R17
00A8 0D83 std y+5,R16
00AA .dbline 44
00AA ; n=n-E[2]*10;
00AA 9801 movw R18,R16
00AC 0AE0 ldi R16,10
00AE 10E0 ldi R17,0
00B0 0E940000 xcall empy16s
00B4 A01A sub R10,R16
00B6 B10A sbc R11,R17
00B8 .dbline 45
00B8 ; E[3]=n/1;
00B8 B886 std y+8,R11
00BA AF82 std y+7,R10
00BC .dbline 47
00BC ;
00BC ; Draw_NtoArab(0x02,0x50,E[0]);
00BC 2980 ldd R2,y+1
00BE 3A80 ldd R3,y+2
00C0 2882 std y+0,R2
00C2 20E5 ldi R18,80
00C4 02E0 ldi R16,2
00C6 0E940000 xcall _Draw_NtoArab
00CA .dbline 48
00CA ; Draw_NtoArab(0x02,0x58,E[1]);
00CA 2B80 ldd R2,y+3
00CC 3C80 ldd R3,y+4
00CE 2882 std y+0,R2
00D0 28E5 ldi R18,88
00D2 02E0 ldi R16,2
00D4 0E940000 xcall _Draw_NtoArab
00D8 .dbline 49
00D8 ; Draw_NtoArab(0x02,0x60,E[2]);
00D8 2D80 ldd R2,y+5
00DA 3E80 ldd R3,y+6
00DC 2882 std y+0,R2
00DE 20E6 ldi R18,96
00E0 02E0 ldi R16,2
00E2 0E940000 xcall _Draw_NtoArab
00E6 .dbline 50
00E6 ; Draw_NtoArab(0x02,0x70,E[3]);
00E6 2F80 ldd R2,y+7
00E8 3884 ldd R3,y+8
00EA 2882 std y+0,R2
00EC 20E7 ldi R18,112
00EE 02E0 ldi R16,2
00F0 0E940000 xcall _Draw_NtoArab
00F4 .dbline -2
00F4 L1:
00F4 2996 adiw R28,9
00F6 0E940000 xcall pop_gset3
00FA .dbline 0 ; func end
00FA 0895 ret
00FC .dbsym r adc 20 i
00FC .dbsym r m 22 i
00FC .dbsym r n 10 i
00FC .dbsym l E 1 A[8:4]i
00FC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -