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