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

📄 main.s

📁 实现A/D转换功能,含有实验结果.据有很大的修改空间
💻 S
字号:
	.module main.c
	.area text
;              q -> 0,X
;              a -> 1,X
;              t -> 5,X
;              p -> 7,X
;              b -> 8,X
_main::
	ais #-9
	tsx
; /*-----------------------------------------------------*
; *工 程 名:AD.prj                                       *
; *硬件连接:PTB0/AD0 接模拟量输入端                      *
; *程序描述:获取1路A/D转换结果,并滤波,通过串口发送出去   *
; *目   的:掌握AD转换的基本编程方法                      *
; *注   意:用SD-1实验板测试时,把液晶拔出,否则可能影响结果*
; *----------《嵌入式应用技术基础教程》教学实例---------*/
; /*[头文件]*/
; #include "GP32C.H"
; /*[函数声明]*/
; extern void SCIInit(void);    //串行口函数声明
; extern void SCISend1(unsigned char o);
; extern void SCISendN(unsigned char n,unsigned char ch[]);
; //有关A/D转换函数声明
; extern unsigned char adave(unsigned char n,unsigned char channel); 
; extern unsigned char advalue(unsigned char channel);
; extern unsigned char admid(unsigned char channel);
; /*[主程序]*/
; void main(void)
;  {  float a;
;     int t;
;     unsigned char p,b,q;
; 	SCIInit();         //串行口初始化      
	jsr _SCIInit
	tsx
; 	ADCLK=0b00110000;  //A/D用内部总线时钟,2分频
	lda #48
	sta 0x3e
	jmp L3
L2:
; 	while(1){
;       
;      a=adave(20,0)/51.0;
	clra
	psha
	lda #20
	psha
	jsr _adave
	ais #2
	tsx
	clr *__r0
	psha
	lda *__r0
	psha
	clra
	psha
	psha
	tst 3,SP
	bpl X0
	com 2,SP
	com 1,SP
X0:
	jsr __long_to_SPfloat
	clra
	psha
	psha
	lda #76
	psha
	lda #66
	psha
	jsr __SPFloat_div
	ais #4
	pula
	sta 1,X
	pula
	sta 2,X
	pula
	sta 3,X
	pula
	sta 4,X
;       t=a*100; 
	clra
	psha
	psha
	lda #-56
	psha
	lda #66
	psha
	lda 4,X
	psha
	lda 3,X
	psha
	lda 2,X
	psha
	lda 1,X
	psha
	jsr __SPFloat_mul
	ais #4
	jsr __SPFloat_to_long
	ais #2
	pula
	sta 5,X
	pula
	sta 6,X
;       SCISendN(14,"通道0电压值是");
	ldhx #L5
	pshx
	pshh
	lda #14
	psha
	jsr _SCISendN
	ais #3
	tsx
;       p=t/100;
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 7,X
;       SCISend1(p+0x30);
	add #48
	psha
	jsr _SCISend1
	ais #1
;        SCISend1('.');
	lda #46
	psha
	jsr _SCISend1
	ais #1
	tsx
;        b=t%100/10;
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 8,X
;       SCISend1(b+0x30);
	add #48
	psha
	jsr _SCISend1
	ais #1
	tsx
;       q=t%10;
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta ,X
;       SCISend1(q+0x30);
	add #48
	psha
	jsr _SCISend1
	ais #1
;       SCISendN(3,"伏");
	ldhx #L6
	pshx
	pshh
	lda #3
	psha
	jsr _SCISendN
	ais #3
	tsx
;       for(p=0;p<1000;p++)
	clr 7,X
	bra L10
L7:
	clr 8,X
	bra L14
L11:
L12:
	inc 8,X
L14:
	lda 8,X
	cmp #-6
	blo L11
L8:
	inc 7,X
L10:
	lda 7,X
	cmp #-24
	blo L7
	ldhx #L15
	pshx
	pshh
	lda #7
	psha
	jsr _SCISendN
	ais #3
	lda #1
	psha
	lda #20
	psha
	jsr _adave
	ais #2
	tsx
	clr *__r0
	psha
	lda *__r0
	psha
	clra
	psha
	psha
	tst 3,SP
	bpl X1
	com 2,SP
	com 1,SP
X1:
	jsr __long_to_SPfloat
	clra
	psha
	psha
	lda #76
	psha
	lda #66
	psha
	jsr __SPFloat_div
	ais #4
	pula
	sta 1,X
	pula
	sta 2,X
	pula
	sta 3,X
	pula
	sta 4,X
	clra
	psha
	psha
	lda #-56
	psha
	lda #66
	psha
	lda 4,X
	psha
	lda 3,X
	psha
	lda 2,X
	psha
	lda 1,X
	psha
	jsr __SPFloat_mul
	ais #4
	jsr __SPFloat_to_long
	ais #2
	pula
	sta 5,X
	pula
	sta 6,X
	ldhx #L16
	pshx
	pshh
	lda #14
	psha
	jsr _SCISendN
	ais #3
	tsx
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 7,X
	add #48
	psha
	jsr _SCISend1
	ais #1
	lda #46
	psha
	jsr _SCISend1
	ais #1
	tsx
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 8,X
	add #48
	psha
	jsr _SCISend1
	ais #1
	tsx
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta ,X
	add #48
	psha
	jsr _SCISend1
	ais #1
	ldhx #L6
	pshx
	pshh
	lda #3
	psha
	jsr _SCISendN
	ais #3
	ldhx #L15
	pshx
	pshh
	lda #7
	psha
	jsr _SCISendN
	ais #3
	tsx
L3:
	jmp L2
X2:
L1:
	ais #9
	.dbline 0 ; func end
	rts
	.area lit
L16:
	.byte 205,168,181,192,49,181,231,209,185,214,181,202,199,0
L15:
	.byte 32,32,32,0
L6:
	.byte 183,252,0
L5:
	.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 + -