⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 要用到开发工具SD-H08
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -