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

📄 0809_ad.asm

📁 A/D转换子程序
💻 ASM
字号:
;AD转换实验,用中断方法读结果
;CS8255----F228H,CS0809----F230H,P3.2----EOC,,IN0---0~5V
;PC3~5-----LEDSA~LEDSC,PC2-------LEDSELECT(通过短路套已接好)
;PA0~7-----LEDA~LEDDP(通过短路套已接好)
;---------------------------------------------------------
C8255   EQU     0F22BH          ;8255命令口地址
P8255A  EQU     0F228H          ;8255 PA口地址
P8255B  EQU     0F229H          ;8255 PB口地址
P8255C  EQU     0F22AH          ;8255 PC口地址
C0809	EQU		0F230H			;ADC0809片选信号
LED0  	DATA     50H            ;显存区
LED1 	DATA   	 51H
LED2    DATA     52H
;---------------------------------------------------------
        ORG     0000H
        AJMP    MAIN
        ORG		0003H
        AJMP	FX0	
        ORG     0030H
MAIN:   MOV     SP,#60H		
        MOV     LED0,#00H     ;置显示初始值
        MOV     LED1,#00H
        MOV     LED2,#00H
        
        MOV     DPTR,#C8255		;8255初始化
        MOV     A,#80H          ;8255 PA,PB,PC口输出
        MOVX    @DPTR,A
        
        CLR		IT0
   		SETB	EX0
		SETB 	EA            ;开中断
		
		MOV		DPTR,#C0809
		MOVX	@DPTR,A		  ;启动AD转换
			
LOOP:	ACALL   DISP           ;显示子程序 
        AJMP    LOOP         ;循环扫描
        
;---------------------------------------------------------         
DISP: 	MOV     DPTR,#P8255C    
	    MOV     A,#00H
	    MOVX    @DPTR,A        ;通过8255C口选种第一个数码管
		MOV		DPTR,#LEDSEG
		MOV 	A,LED0
		MOVC 	A,@A+DPTR
		MOV     DPTR,#P8255A   ;显示键值       
		MOVX    @DPTR,A        ;送显示段选码
		
		ACALL	DELAY          ;延时,增加显示亮度 
		CLR 	A				;带了锁存器,送下一个数据前将数据撤消
		MOVX	@DPTR,A
		
		
		MOV     DPTR,#P8255C    
	    MOV     A,#08H
	    MOVX    @DPTR,A        ;通过8255C口选种第二个数码管
		MOV		DPTR,#LEDSEG
		MOV 	A,LED1
		MOVC 	A,@A+DPTR
		MOV     DPTR,#P8255A   ;显示键值       
		MOVX    @DPTR,A        ;送显示段选码
		
		ACALL	DELAY
		CLR		A
		MOVX	@DPTR,A
		
		MOV     DPTR,#P8255C    
	    MOV     A,#10H
	    MOVX    @DPTR,A        ;通过8255C口选种第三个数码管
		MOV		DPTR,#LEDSEG
		MOV 	A,LED2
		MOVC 	A,@A+DPTR
		ORL		A,#80H         ;加个小数点在最高位后面
		MOV     DPTR,#P8255A   ;显示键值       
		MOVX    @DPTR,A        ;送显示段选码
		
		ACALL	DELAY
		CLR		A
		MOVX	@DPTR,A
		
        RET
        
;---------------------------------------------------------        
FX0:      ;中断服务程序
		MOV 	DPTR,#C0809
		MOVX	A,@DPTR     ;读转换结果
		
		MOV		B,#5
		MUL		AB			;相乘结果为16位,再右移8位,则B刚好为整数部分
		MOV		LED2,B
		MOV		B,#10
		MUL		AB          ;小数部分放大10倍
		MOV		LED1,B
		MOV 	B,#10
		MUL		AB
		MOV 	LED0,B
FX0_RET:MOV		DPTR,#C0809
		MOVX	@DPTR,A		  ;启动AD下一次转换	
		RETI
 	    
DELAY:	MOV R7,#5
		DJNZ R7,$
		RET
;---------------------------------------------------------          
;LED显示常数表
LEDSEG: DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;---------------------------------------------------------        
        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -