📄 dac.asm
字号:
;实验目的:熟悉D/A转换芯片的使用
;把待转换的数据送D/A芯片TLC5615,开启D/A转换
;用万用表或者示波器观察输出口(CON36)的电压
;硬件要求:拨码开关S8全部置ON
; 其他拨码开关全部置OFF
INCLUDE<P16F877A.INC> ;包含头文件
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
VALUE1 EQU 0F1H ;待转换数据高4位(高半字节为无效数据)
VALUE2 EQU 0FCH ;待转换数据低6位(最低2位为无效数据)
ORG 00H ;程序复位地址
NOP ;ICD所需要的空指令
MAIN
CLRF PORTC ;先清除所有输出
BCF PORTC,3 ;拉低时钟信号,以便更改片选使能信号
BSF PORTC,2 ;片选禁止
BANKSEL TRISC
CLRF TRISC ;C口全输出
BSF TRISC,4 ;RC4口输入(SDI)
BANKSEL SSPSTAT
MOVLW B'01000000' ;CKE=1下降沿发送(TCL5615规定)
MOVWF SSPSTAT
CLRF STATUS
MOVLW B'00100000' ;SSPEN=1,CKP=0 SPI主空模式Fosc/4
MOVWF SSPCON
BCF PORTC,3 ;拉低时钟信号,以便更改片选使能信号
BCF PORTC,2 ;片选使能
MOVLW VALUE1 ;取待转换数据高4位
MOVWF SSPBUF ;发送
BTFSS PIR1,SSPIF ;判断是否发送完成
GOTO $-1 ;等待发送完成
BCF PIR1,SSPIF ;清除中断标志位
MOVFW SSPBUF ;清空接收寄存器
MOVLW VALUE2 ;取待发送数据低6位
MOVWF SSPBUF ;发送
BTFSS PIR1,SSPIF ;判断是否
GOTO $-1 ;等待完成
BCF PIR1,SSPIF ;清除中断标志位
BCF PORTC,3 ;拉低时钟信号
BSF PORTC,2 ;片选禁止
NOP
GOTO $
;************************************************************
END ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -