📄 main.lis
字号:
.module main.c
.area text
; q -> 0,X
; a -> 1,X
; t -> 5,X
; p -> 7,X
; b -> 8,X
0000 _main::
0000 A7F7 ais #-9
0002 95 tsx
0003 ; /*-----------------------------------------------------*
0003 ; *工 程 名:AD.prj *
0003 ; *硬件连接:PTB0/AD0 接模拟量输入端 *
0003 ; *程序描述:获取1路A/D转换结果,并滤波,通过串口发送出去 *
0003 ; *目 的:掌握AD转换的基本编程方法 *
0003 ; *注 意:用SD-1实验板测试时,把液晶拔出,否则可能影响结果*
0003 ; *----------《嵌入式应用技术基础教程》教学实例---------*/
0003 ; /*[头文件]*/
0003 ; #include "GP32C.H"
0003 ; /*[函数声明]*/
0003 ; extern void SCIInit(void); //串行口函数声明
0003 ; extern void SCISend1(unsigned char o);
0003 ; extern void SCISendN(unsigned char n,unsigned char ch[]);
0003 ; //有关A/D转换函数声明
0003 ; extern unsigned char adave(unsigned char n,unsigned char channel);
0003 ; extern unsigned char advalue(unsigned char channel);
0003 ; extern unsigned char admid(unsigned char channel);
0003 ; /*[主程序]*/
0003 ; void main(void)
0003 ; { float a;
0003 ; int t;
0003 ; unsigned char p,b,q;
0003 ; SCIInit(); //串行口初始化
0003 CD0000 jsr _SCIInit
0006 95 tsx
0007 ; ADCLK=0b00110000; //A/D用内部总线时钟,2分频
0007 A630 lda #48
0009 B73E sta 0x3e
000B CC022B jmp L3
000E L2:
000E ; while(1){
000E ;
000E ; a=adave(20,0)/51.0;
000E 4F clra
000F 87 psha
0010 A614 lda #20
0012 87 psha
0013 CD0000 jsr _adave
0016 A702 ais #2
0018 95 tsx
0019 3F00 clr *__r0
001B 87 psha
001C B600 lda *__r0
001E 87 psha
001F 4F clra
0020 87 psha
0021 87 psha
0022 9E6D03 tst 3,SP
0025 2A06 bpl X0
0027 9E6302 com 2,SP
002A 9E6301 com 1,SP
002D X0:
002D CD0000 jsr __long_to_SPfloat
0030 4F clra
0031 87 psha
0032 87 psha
0033 A64C lda #76
0035 87 psha
0036 A642 lda #66
0038 87 psha
0039 CD0000 jsr __SPFloat_div
003C A704 ais #4
003E 86 pula
003F E701 sta 1,X
0041 86 pula
0042 E702 sta 2,X
0044 86 pula
0045 E703 sta 3,X
0047 86 pula
0048 E704 sta 4,X
004A ; t=a*100;
004A 4F clra
004B 87 psha
004C 87 psha
004D A6C8 lda #-56
004F 87 psha
0050 A642 lda #66
0052 87 psha
0053 E604 lda 4,X
0055 87 psha
0056 E603 lda 3,X
0058 87 psha
0059 E602 lda 2,X
005B 87 psha
005C E601 lda 1,X
005E 87 psha
005F CD0000 jsr __SPFloat_mul
0062 A704 ais #4
0064 CD0000 jsr __SPFloat_to_long
0067 A702 ais #2
0069 86 pula
006A E705 sta 5,X
006C 86 pula
006D E706 sta 6,X
006F ; SCISendN(14,"通道0电压值是");
006F 450015 ldhx #L5
0072 89 pshx
0073 8B pshh
0074 A60E lda #14
0076 87 psha
0077 CD0000 jsr _SCISendN
007A A703 ais #3
007C 95 tsx
007D ; p=t/100;
007D E606 lda 6,X
007F B700 sta *__rlo
0081 E605 lda 5,X
0083 B700 sta *__rhi
0085 A664 lda #100
0087 87 psha
0088 4F clra
0089 87 psha
008A CD0000 jsr __divmod16s
008D A702 ais #2
008F 4E0000 mov *__rlo,*__r1
0092 B600 lda *__r1
0094 E707 sta 7,X
0096 ; SCISend1(p+0x30);
0096 AB30 add #48
0098 87 psha
0099 CD0000 jsr _SCISend1
009C A701 ais #1
009E ; SCISend1('.');
009E A62E lda #46
00A0 87 psha
00A1 CD0000 jsr _SCISend1
00A4 A701 ais #1
00A6 95 tsx
00A7 ; b=t%100/10;
00A7 E606 lda 6,X
00A9 B700 sta *__rlo
00AB E605 lda 5,X
00AD B700 sta *__rhi
00AF A664 lda #100
00B1 87 psha
00B2 4F clra
00B3 87 psha
00B4 CD0000 jsr __divmod16s
00B7 86 pula
00B8 B700 sta *__r0
00BA 86 pula
00BB B700 sta *__rlo
00BD 4E0000 mov *__r0,*__rhi
00C0 A60A lda #10
00C2 87 psha
00C3 4F clra
00C4 87 psha
00C5 CD0000 jsr __divmod16s
00C8 A702 ais #2
00CA 4E0000 mov *__rlo,*__r1
00CD B600 lda *__r1
00CF E708 sta 8,X
00D1 ; SCISend1(b+0x30);
00D1 AB30 add #48
00D3 87 psha
00D4 CD0000 jsr _SCISend1
00D7 A701 ais #1
00D9 95 tsx
00DA ; q=t%10;
00DA E606 lda 6,X
00DC B700 sta *__rlo
00DE E605 lda 5,X
00E0 B700 sta *__rhi
00E2 A60A lda #10
00E4 87 psha
00E5 4F clra
00E6 87 psha
00E7 CD0000 jsr __divmod16s
00EA 86 pula
00EB 86 pula
00EC F7 sta ,X
00ED ; SCISend1(q+0x30);
00ED AB30 add #48
00EF 87 psha
00F0 CD0000 jsr _SCISend1
00F3 A701 ais #1
00F5 ; SCISendN(3,"伏");
00F5 450012 ldhx #L6
00F8 89 pshx
00F9 8B pshh
00FA A603 lda #3
00FC 87 psha
00FD CD0000 jsr _SCISendN
0100 A703 ais #3
0102 95 tsx
0103 ; for(p=0;p<1000;p++)
0103 6F07 clr 7,X
0105 200E bra L10
0107 L7:
0107 6F08 clr 8,X
0109 2002 bra L14
010B L11:
010B L12:
010B 6C08 inc 8,X
010D L14:
010D E608 lda 8,X
010F A1FA cmp #-6
0111 25F8 blo L11
0113 L8:
0113 6C07 inc 7,X
0115 L10:
0115 E607 lda 7,X
0117 A1E8 cmp #-24
0119 25EC blo L7
011B 45000E ldhx #L15
011E 89 pshx
011F 8B pshh
0120 A607 lda #7
0122 87 psha
0123 CD0000 jsr _SCISendN
0126 A703 ais #3
0128 A601 lda #1
012A 87 psha
012B A614 lda #20
012D 87 psha
012E CD0000 jsr _adave
0131 A702 ais #2
0133 95 tsx
0134 3F00 clr *__r0
0136 87 psha
0137 B600 lda *__r0
0139 87 psha
013A 4F clra
013B 87 psha
013C 87 psha
013D 9E6D03 tst 3,SP
0140 2A06 bpl X1
0142 9E6302 com 2,SP
0145 9E6301 com 1,SP
0148 X1:
0148 CD0000 jsr __long_to_SPfloat
014B 4F clra
014C 87 psha
014D 87 psha
014E A64C lda #76
0150 87 psha
0151 A642 lda #66
0153 87 psha
0154 CD0000 jsr __SPFloat_div
0157 A704 ais #4
0159 86 pula
015A E701 sta 1,X
015C 86 pula
015D E702 sta 2,X
015F 86 pula
0160 E703 sta 3,X
0162 86 pula
0163 E704 sta 4,X
0165 4F clra
0166 87 psha
0167 87 psha
0168 A6C8 lda #-56
016A 87 psha
016B A642 lda #66
016D 87 psha
016E E604 lda 4,X
0170 87 psha
0171 E603 lda 3,X
0173 87 psha
0174 E602 lda 2,X
0176 87 psha
0177 E601 lda 1,X
0179 87 psha
017A CD0000 jsr __SPFloat_mul
017D A704 ais #4
017F CD0000 jsr __SPFloat_to_long
0182 A702 ais #2
0184 86 pula
0185 E705 sta 5,X
0187 86 pula
0188 E706 sta 6,X
018A 450000 ldhx #L16
018D 89 pshx
018E 8B pshh
018F A60E lda #14
0191 87 psha
0192 CD0000 jsr _SCISendN
0195 A703 ais #3
0197 95 tsx
0198 E606 lda 6,X
019A B700 sta *__rlo
019C E605 lda 5,X
019E B700 sta *__rhi
01A0 A664 lda #100
01A2 87 psha
01A3 4F clra
01A4 87 psha
01A5 CD0000 jsr __divmod16s
01A8 A702 ais #2
01AA 4E0000 mov *__rlo,*__r1
01AD B600 lda *__r1
01AF E707 sta 7,X
01B1 AB30 add #48
01B3 87 psha
01B4 CD0000 jsr _SCISend1
01B7 A701 ais #1
01B9 A62E lda #46
01BB 87 psha
01BC CD0000 jsr _SCISend1
01BF A701 ais #1
01C1 95 tsx
01C2 E606 lda 6,X
01C4 B700 sta *__rlo
01C6 E605 lda 5,X
01C8 B700 sta *__rhi
01CA A664 lda #100
01CC 87 psha
01CD 4F clra
01CE 87 psha
01CF CD0000 jsr __divmod16s
01D2 86 pula
01D3 B700 sta *__r0
01D5 86 pula
01D6 B700 sta *__rlo
01D8 4E0000 mov *__r0,*__rhi
01DB A60A lda #10
01DD 87 psha
01DE 4F clra
01DF 87 psha
01E0 CD0000 jsr __divmod16s
01E3 A702 ais #2
01E5 4E0000 mov *__rlo,*__r1
01E8 B600 lda *__r1
01EA E708 sta 8,X
01EC AB30 add #48
01EE 87 psha
01EF CD0000 jsr _SCISend1
01F2 A701 ais #1
01F4 95 tsx
01F5 E606 lda 6,X
01F7 B700 sta *__rlo
01F9 E605 lda 5,X
01FB B700 sta *__rhi
01FD A60A lda #10
01FF 87 psha
0200 4F clra
0201 87 psha
0202 CD0000 jsr __divmod16s
0205 86 pula
0206 86 pula
0207 F7 sta ,X
0208 AB30 add #48
020A 87 psha
020B CD0000 jsr _SCISend1
020E A701 ais #1
0210 450012 ldhx #L6
0213 89 pshx
0214 8B pshh
0215 A603 lda #3
0217 87 psha
0218 CD0000 jsr _SCISendN
021B A703 ais #3
021D 45000E ldhx #L15
0220 89 pshx
0221 8B pshh
0222 A607 lda #7
0224 87 psha
0225 CD0000 jsr _SCISendN
0228 A703 ais #3
022A 95 tsx
022B L3:
022B CC000E jmp L2
022E X2:
022E L1:
022E A709 ais #9
0230 .dbline 0 ; func end
0230 81 rts
.area lit
0000 L16:
0000 CDA8B5C031B5E7D1B9D6B5CAC700 .byte 205,168,181,192,49,181,231,209,185,214,181,202,199,0
000E L15:
000E 20202000 .byte 32,32,32,0
0012 L6:
0012 B7FC00 .byte 183,252,0
0015 L5:
0015 CDA8B5C030B5E7D1B9D6B5CAC700 .byte 205,168,181,192,48,181,231,209,185,214,181,202,199,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -