📄 main.lis
字号:
.module main.c
.area text
; pl -> 0,X
; va -> 1,X
; t -> 3,X
; i -> 5,X
0000 _main::
0000 A7FA ais #-6
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 ; 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 ; { int t;
0003 ; unsigned char i;
0003 ; unsigned char pl;
0003 ; int va;//定义变量
0003 ; SCIInit(); //串行口初始化
0003 CD0000 jsr _SCIInit
0006 95 tsx
0007 ; ADCLK=0b00110000; //A/D用内部总线时钟,2分频
0007 A630 lda #48
0009 B73E sta 0x3e
000B CC02A9 jmp L3
000E L2:
000E ; while(1)//死循环
000E ; {
000E ; SCISendN(11,"通道0电压值");//发送通道0的电压值
000E 45000F ldhx #L5
0011 89 pshx
0012 8B pshh
0013 A60B lda #11
0015 87 psha
0016 CD0000 jsr _SCISendN
0019 A703 ais #3
001B ; pl=adave(20,0);//接收对收到的值滤波后取得的值。20*3(取中)
001B 4F clra
001C 87 psha
001D A614 lda #20
001F 87 psha
0020 CD0000 jsr _adave
0023 A702 ais #2
0025 95 tsx
0026 B700 sta *__r1
0028 F7 sta ,X
0029 ; va=pl*5/255+48;//取第一位
0029 3F00 clr *__r0
002B A605 lda #5
002D 87 psha
002E 4F clra
002F 87 psha
0030 B600 lda *__r1
0032 87 psha
0033 B600 lda *__r0
0035 87 psha
0036 CD0000 jsr __mul16
0039 A704 ais #4
003B 4E0000 mov *__rlo,*__r1
003E 4E0000 mov *__rhi,*__r0
0041 4E0000 mov *__r1,*__rlo
0044 4E0000 mov *__r0,*__rhi
0047 A6FF lda #-1
0049 87 psha
004A 4F clra
004B 87 psha
004C CD0000 jsr __divmod16s
004F A702 ais #2
0051 4E0000 mov *__rhi,*__r0
0054 4E0000 mov *__rlo,*__r1
0057 B600 lda *__r1
0059 AB30 add #48
005B E702 sta 2,X
005D B600 lda *__r0
005F A900 adc #0
0061 E701 sta 1,X
0063 ; SCISend1(va);//输出第一位的数值
0063 E602 lda 2,X
0065 87 psha
0066 CD0000 jsr _SCISend1
0069 A701 ais #1
006B ; SCISend1('.');//输出符号位
006B A62E lda #46
006D 87 psha
006E CD0000 jsr _SCISend1
0071 A701 ais #1
0073 95 tsx
0074 ; va=(pl*10/51)%10+48;//取第二位的数值
0074 3F00 clr *__r0
0076 F6 lda ,X
0077 B700 sta *__r1
0079 A60A lda #10
007B 87 psha
007C 4F clra
007D 87 psha
007E B600 lda *__r1
0080 87 psha
0081 B600 lda *__r0
0083 87 psha
0084 CD0000 jsr __mul16
0087 A704 ais #4
0089 4E0000 mov *__rlo,*__r1
008C 4E0000 mov *__rhi,*__r0
008F 4E0000 mov *__r1,*__rlo
0092 4E0000 mov *__r0,*__rhi
0095 A633 lda #51
0097 87 psha
0098 4F clra
0099 87 psha
009A CD0000 jsr __divmod16s
009D A702 ais #2
009F 4E0000 mov *__rhi,*__r0
00A2 4E0000 mov *__rlo,*__r1
00A5 4E0000 mov *__r1,*__rlo
00A8 4E0000 mov *__r0,*__rhi
00AB A60A lda #10
00AD 87 psha
00AE 4F clra
00AF 87 psha
00B0 CD0000 jsr __divmod16s
00B3 86 pula
00B4 B700 sta *__r0
00B6 86 pula
00B7 AB30 add #48
00B9 E702 sta 2,X
00BB B600 lda *__r0
00BD A900 adc #0
00BF E701 sta 1,X
00C1 ; SCISend1(va);//发送
00C1 E602 lda 2,X
00C3 87 psha
00C4 CD0000 jsr _SCISend1
00C7 A701 ais #1
00C9 95 tsx
00CA ; va=((pl*100)/51)%10+48;//取最后一位的数值
00CA 3F00 clr *__r0
00CC F6 lda ,X
00CD B700 sta *__r1
00CF A664 lda #100
00D1 87 psha
00D2 4F clra
00D3 87 psha
00D4 B600 lda *__r1
00D6 87 psha
00D7 B600 lda *__r0
00D9 87 psha
00DA CD0000 jsr __mul16
00DD A704 ais #4
00DF 4E0000 mov *__rlo,*__r1
00E2 4E0000 mov *__rhi,*__r0
00E5 4E0000 mov *__r1,*__rlo
00E8 4E0000 mov *__r0,*__rhi
00EB A633 lda #51
00ED 87 psha
00EE 4F clra
00EF 87 psha
00F0 CD0000 jsr __divmod16s
00F3 A702 ais #2
00F5 4E0000 mov *__rhi,*__r0
00F8 4E0000 mov *__rlo,*__r1
00FB 4E0000 mov *__r1,*__rlo
00FE 4E0000 mov *__r0,*__rhi
0101 A60A lda #10
0103 87 psha
0104 4F clra
0105 87 psha
0106 CD0000 jsr __divmod16s
0109 86 pula
010A B700 sta *__r0
010C 86 pula
010D AB30 add #48
010F E702 sta 2,X
0111 B600 lda *__r0
0113 A900 adc #0
0115 E701 sta 1,X
0117 ; SCISend1(va);//发送
0117 E602 lda 2,X
0119 87 psha
011A CD0000 jsr _SCISend1
011D A701 ais #1
011F ; SCISendN(2,"伏");//发送伏;
011F 45000C ldhx #L6
0122 89 pshx
0123 8B pshh
0124 A602 lda #2
0126 87 psha
0127 CD0000 jsr _SCISendN
012A A703 ais #3
012C 95 tsx
012D ; for(t=0;t<1024;t++)
012D 6F04 clr 4,X
012F 6F03 clr 3,X
0131 L7:
0131 6F05 clr 5,X
0133 2002 bra L14
0135 L11:
0135 L12:
0135 6C05 inc 5,X
0137 L14:
0137 E605 lda 5,X
0139 A164 cmp #100
013B 25F8 blo L11
013D L8:
013D E604 lda 4,X
013F AB01 add #1
0141 E704 sta 4,X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -