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

📄 2008.4.15.txt

📁 dac7512,mcp3204应用 dac7512,mcp3204应用
💻 TXT
字号:
单片机内存分配申明!
m232_F	  EQU 78H	   ;发送数据存放位
M232_W    EQU 7DH
			
d7512_CS  bit P1.6     ;7512P片选脚
d7512_CLK BIT P1.3     ;7512时钟
d7512_DI  BIT P1.4     ;7512数据输入脚
Z_TAI     EQU 74H      ;输出内阻控制字    00--输出设定电压,01--输出对地1K	10--输出对地100K,11--输出对地高阻          
SHUJU_H   EQU 70H      ;数据高位存放位
SHUJU_L   EQU 71H      ;数据低位存放位
DATA_2    EQU 72H	           ;控制数据发送字节
DATA_8	  EQU 73H	           ;控制数据发送位数

;AD3208参数定义:
ad3208_cs	bit p1.5		;mcp3208片选
ad3208_clk	bit p1.3		;mcp3208时钟输入
ad3208_do	bit p1.2		;mcp3208数据输出
ad3208_di	bit p1.4		;mcp3208数据输入
a_data_2	equ 60h			;接收数据高、低位
a_data_8	equ 61h			;接受数据位数
ad3208_h	equ 62h			;读出数据高位
ad3208_l	equ	63h			;读出数据低位
CH_C		EQU	64H			;通道选择存放位



	ORG 0000H
	ajmp main


ORG 0080H
MAIN: 
	mov sp,#07h
	CLR P3.7
	CLR EA
	setb p1.2
	MOV SHUJU_H,#03H
	MOV SHUJU_H,#0C4H
	lcall dac7512_in
	MOV PSW,#00H
	MOV TMOD,#21H	;主程序需要做的串口初始化
	MOV TL1,#0FDH
	MOV TH1,#0FDH
	MOV PCON,#00H
	MOV SCON,#50H
	SETB TR1
	CLR TI																				   
	clr ri

main_1:
	CLR RI
	SETB REN
	JNB RI,$
	MOV M232_W,SBUF	
	CLR RI
	JNB RI,$
	MOV M232_W+1,SBUF
	CLR RI
	JNB RI,$
	MOV M232_W+2,SBUF
	CLR RI
	JNB RI,$
	MOV M232_W+3,SBUF
	CLR RI
	CLR REN

	MOV A,M232_W
	CJNE A,#0CCH,OE
	MOV m232_F,#0CCH
	LCALL m232_FS 

	MOV A,M232_W+1
	CJNE A,#01H,MODE_1
	MOV m232_F,#01H
	LCALL m232_FS   	

	MOV SHUJU_H,M232_W+2  	
	MOV SHUJU_L,M232_W+3
	lcall dac7512_in
	MOV m232_F,SHUJU_H
    LCALL m232_FS
	MOV m232_F,SHUJU_L
    LCALL m232_FS
	ajmp main_1

OE:
   	MOV M232_W,#00H
   	MOV M232_W+1,#00H
	MOV M232_W+2,#00H
   	MOV M232_W+3,#00H
	MOV m232_F,#0EH
	LCALL m232_FS
	AJMP main_1


MODE_1:
	CJNE A,#02H,OE
	MOV m232_F,#02H
	LCALL m232_FS   	

	MOV A,M232_W+2
	CJNE A,#01H,MODEA
	MOV m232_F,#01H
	LCALL m232_FS
	MOV CH_C,#00H
	LCALL ad3208 
	MOV m232_F,ad3208_h
    LCALL m232_FS
	MOV m232_F,ad3208_L
    LCALL m232_FS
    AJMP MAIN_1
MODEA:
	CJNE A,#02H,OE
	MOV m232_F,#02H
	LCALL m232_FS
	MOV CH_C,#10H
	LCALL ad3208 
	MOV m232_F,ad3208_h
    LCALL m232_FS
	MOV m232_F,ad3208_L
    LCALL m232_FS
    AJMP MAIN_1





m232_FS:  
	CLR TI		;清除发送标志位
	MOV SBUF,m232_F	;发送数据
	JNB TI,$	;等待发送完毕
	CLR TI             
	ret



;DA数据写入程序
Dac7512_IN:                                                
            MOV DATA_2,#02H			;发送位数为16位
			MOV DATA_8,#08H
			CLR C
			MOV A,SHUJU_L
			SUBB A,#88H
			MOV A,SHUJU_H
			SUBB A,#04H
			JNC DAC_PDH
			CLR C
			MOV A,SHUJU_L
			SUBB A,#0CH
			MOV A,SHUJU_H
			SUBB A,#03H
			JC DAC_PDL

DATA_IN0:			 
			SETB d7512_CS      ;发送片选
			CLR  d7512_CS
			MOV A,SHUJU_H		;发送数据送A,移位比较确认数据为1或0,发送
DATA_IN1:
			CLR C
			RLC A
			JC XIE_1
			setb d7512_CLK      ;发送数据0
			CLR d7512_DI       
DATA_IN3:
			clr d7512_CLK
			DJNZ DATA_8,DATA_IN1    ;检测高低8位发送完毕没有
			DJNZ DATA_2,DATA_IN2    ;检测数据全部发送完毕没有,没有转低8位发送
			setb d7512_cs
			AJMP RET_MAIN
XIE_1:                     
			setb d7512_CLK		 ;发送数据1
			SETB d7512_DI
			AJMP DATA_IN3
DATA_IN2:							;转低8位数据
			MOV DATA_8,#08H
			MOV A,SHUJU_L
			AJMP DATA_IN1
RET_MAIN:		
			RET

DAC_PDH:
			MOV m232_F,#0FH
			LCALL m232_FS
			AJMP RET_MAIN  
DAC_PDL:
			MOV m232_F,#00H
			LCALL m232_FS
			AJMP RET_MAIN 






;读AD3208程序

ad3208:								
			clr ad3208_cs
			clr ad3208_clk
			setb ad3208_di       ;发送start位
			setb ad3208_clk

			clr ad3208_clk
			setb ad3208_di         ;发送sgl位
			setb ad3208_clk

			MOV A,CH_C
			MOV R2,#03H
			RL A
AD3208_4:
			CLR C
			RLC A
			JC AD3208_3	
		    clr ad3208_clk		   ;发送地址位
			clr ad3208_di          
			setb ad3208_clk
AD3208_5:
			DJNZ R2,AD3208_4
			AJMP AD3208_6
AD3208_3:
	        clr ad3208_clk
			SETB ad3208_di
			setb ad3208_clk
			AJMP AD3208_5
AD3208_6:
			clr c					;准备读数据
			mov a,#00h
			mov a_data_2,#02h
			mov a_data_8,#05h      	;读高5位

ad3208_1:							 ;读入数据
			clr  ad3208_clk
			setb ad3208_clk
			clr  ad3208_clk
			mov c,ad3208_do
			rlc a
		    djnz a_data_8,ad3208_1  
			djnz a_data_2,ad3208_2
			mov ad3208_l,a
			setb ad3208_cs
			ret
ad3208_2:
			mov ad3208_h,a	
			mov a_data_8,#08h        ;读低8位
			mov a,#00h
			ajmp ad3208_1		

END

⌨️ 快捷键说明

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