📄 lpc935dac_test.asm
字号:
/*****************************************
*程序功能: 测试LPC935的内部DA功能
*作者: www.zlgmcu.com
*日期: 14:54 04-2-20
*****************************************/
$NOMOD51
$INCLUDE(REG935.INC)
ORG 0000H
AJMP MAIN
ORG 0023H ;串行中断服务程序入口
AJMP UART_ISR
ORG 0100H
MAIN:
MOV P1M1,#0x00 ;设置P1口模式
MOV P1M2,#0x00
MOV P2M1,#0x01 ;设置P2口模式,P2.0为仅为输入
MOV P2M2,#0x00
ACALL DAC_INIT ;调用DAC初始化程序
ACALL UART_INIT ;调用UART初始化程序
SJMP $
RET
;--------------------------
;功能:初始化DAC
;--------------------------
DAC_INIT:
MOV ADINS,#0x08 ;选择通道
MOV ADMODA,#0x01 ;设置转换模式
MOV ADMODB,#0x44 ;设置0.5Mhz < ADC CLK < 3.3Mhz; 使能DAC转换功能
MOV ADCON0,#0x04 ;选择AD/DA转换模块,设置启动方式
RET
;--------------------------
;功能:初始化UART
;--------------------------
UART_INIT:
MOV SCON,#0x50 ;选择BRG作为波特率发生器
MOV SSTAT,#0x60 ;设置停止位结束产生中断,设置独立的Rx/Tx中断
MOV BRGR0,#0xF0 ;设置内部晶振时的波特率 9600
MOV BRGR1,#0x02
MOV BRGCON,#0x03 ;使能波特率发生器
SETB ES ;使能串行中断
SETB EA ;使能中断
RET
;--------------------------
;功能:UART中断服务程序
;--------------------------
UART_ISR:
CLR RI ;清除串行中断接收标志
MOV R3,SBUF ;将数据存入R3
MOV A,ADCON0 ;清ADCON0完成标志位
ANL A,#0x7F
MOV ADCON0,A
MOV AD0DAT3,R3 ;设置AD0DAT3
ACALL DELAY
MOV A,ADCON0 ;启动ADCON0,立即启动方式
ORL A,#0x01
MOV ADCON0,A
CLR TI ;以下为将发送的数据反馈给串口调试器,以鉴别通讯是否正确,清发送标志位
MOV SBUF,R3 ;发送
JNB TI,$ ;等待发送标志为1
CLR TI ;清发送标志
RETI
;---------------------------
;功能:延时
;---------------------------
DELAY:
MOV R1,#0xFF
LOOP1: MOV R2,#0xFF
LOOP2: DJNZ R2,LOOP2
DJNZ R1,LOOP1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -