《串行通信及AD转换实验》由会员分享,可在线阅读,更多相关《串行通信及AD转换实验(20页珍藏版)》请在金锄头文库上搜索。
1、1,串行通信及AD转换实验,实验目的实验器材硬件接线VB界面,软件功能程序清单备注说明,2,实验目的:,A/D转换,单片机异步串行通信,3,实验器材:,1.SD-1型在线编程实验仪2.导线若干,4,硬件接线:,5,VB界面:,6,软件功能:,由PORTB口的模拟量输入,通过单片机的A/D转换器采集8路数据,并放在ADBUF开始的地址中。再在INBUF中放开关量。发86给PC机作为握手信号,进行通信测试,PC机判断后确认,发86作为确认信号,单片机收到86后,把模拟量0-7和开关量送PC机显示。,7,程序清单:,文件说明口地址定义SCI寄存器A/D寄存器数据区定义主程序A/D转换串行通信输出,串
2、行通信输入从PC机接收数据,并存储后送PTA输出把在INBUF和ADBUFF的数据送PC机输出中断矢量,8,*-文件说明-*文件名:sci.as*硬件连接:PORTA口输出它的PTA7-0接OUT的7-0号*指示灯(A0作为运行指示不受其它数据控制)PORTB作为AD输入连接,*PORTB口为模拟量输入口,PORTC的C0-4接IN的5个拨位开关0-4作为开关*输入串行口与微机串行口相接(9600,N,8,1)*程序描述:1.由PORTB口的模拟量输入,通过单片机的A/D转换器采集8*路数据,并放在ADBUF开始的地址中* 2.再在INBUF中放开关量* 3.发86给PC机作为握手信号,进行通
3、信测试,PC机判断后确* 认,发86作为确认信号,单片机收到86后,把模拟量 0-7和* 开关量送PC机显示*目的:A/D转换,单片机异步串行通信 *-*,9,*-口地址定义-PTA EQU $0000 ;A口数据寄存器PTB EQU $0001 ;B口数据寄存器PTC EQU $0002 ;C口数据寄存器PTD EQU $0003 ;D口数据寄存器DDRA EQU $0004 ;A口数据方向寄存器DDRB EQU $0005 ;B口数据方向寄存器DDRC EQU $0006 ;C口数据方向寄存器DDRD EQU $0007 ;D口数据方向寄存器DDRE EQU $0008 ;E口数据寄存器,
4、10,*-SCI寄存器-SCS1 EQU $0016 ;SCI状态寄存器1B-SCTE EQU 7 ;发送缓冲区空标志位B-TC EQU 6 ;发送完成标志位B-SCRF EQU 5 ;接收器满标志位SCDR EQU $0018 ;SCI数据寄存器*-A/D寄存器-ADSCR EQU $003C ;A/D转换状态和控制寄存器B-COCO EQU 7 ;转换完成标志位ADR EQU $003D ;A/D转换数据寄存器ADCLK EQU $003E ;A/D转换输入时钟寄存器RAMstartAddr equ $0040 ;RAM的起始地址(因芯片不同可以更改)FlashStartAddr equ
5、$8000 ;程序开始地址(因芯片不同可以更改),11,*-数据区定义(变量定义)- ORG RAMstartAddr ;RAM的起始地址INBUF RMB 1 ;1字节存放5位开关量ADBUF RMB 8 ;8字节存放8路A/D转换结果ONOFF RMB 1 ;1字节存放从PC的数据 TMPVAR RMB 1 ;暂存使用,12,*-主程序- ORG FlashStartAddr ;程序起始地址MainInit: NOP LDA #$3E ;A/D初始化2分频、使用内部总线时钟 STA ADCLK LDA #$FF ;定义PORTA输出 STA DDRA LDA #$00 STA PTA ST
6、A ONOFF ;ONOFF=0 LDA #$00 ;定义PORTB,PORTC作为输入 STA DDRB STA DDRC,13,*-A/D转换-Main: NOP ;循环获得8路AD值 LDHX #$0 ;H:X=0GA-REPEAT: TXA ;X寄存器送到累加器 STA ADSCR ;选定一路A/D,启动转换 BRCLR 7,ADSCR,* ;等待A/D转换完成 LDA ADR ;A/D转换结果给A STA ADBUF,X ;A给ADBUF+X,储存数据 AIX #1 ;下一存储单元 CPX #$08 ;判断8路转换是否完成 BNE GA-REPEAT ;循环8次转换8个通道模拟量,1
7、4,*-串行通信输出-GET-IN: LDA PTC ;5位开关量采集 STA INBUF ;暂放INBUF NOP LDA #$56 ;把86(16进制数56)为握 ;手信号送出到PC中 BRCLR 7,SCS1,* ;等待以前数据全部发出, ;SCTE置1,发送缓冲区空 STA SCDR ;发送缓冲区空时, ;可向SCI数据寄存器送数,15,*-串行通信输入- NOP LDHX #0WS-REPE1: BRSET 5,SCS1,WS-RECE1 ;测试SCRF位, ;判断接收缓冲器是否满 NOP NOP AIX #1 ;延时等待 CPHX #$FFFF BNE WS-REPE1 BRA D
8、ISP1 ;超时退出WS-RECE1: LDA SCDR ;读取收到的数据,16,CMP #$56 ;判断是否为确认信号86 BNE DISP1 ;不是退出,是就开始通信 NOP LDHX #0WS-REPE2: BRSET 5,SCS1,WS-RECE2 ;测试SCRF位, ;判断接收缓冲器是否满 NOP NOP AIX #1 ;延时等待 CPHX #$6688 BNE WS-REPE2 ;超时退出 BRA DISP1,17,*-从PC机接收数据,并储存后送PTA输出-*-(A.0不受影响)-WS-RECE2 LDA SCDR NOP AND #$FE ;A0=0 STA TMPVAR ;暂
9、时缓存 LDA ONOFF AND #$1 ;留下A.0 ORA TMPVAR ;处理接收的数据,放在A中 STA ONOFF ;储存接收数据在ONOFF中 NOP ;送A/D值,18,*-把在INBUF和ADBUFF的数据送PC机输出- LDHX #$0SA-REPEAT: LDA INBUF,X BRCLR 7,SCS1,* ;SCTE置1, ;发送缓冲区空 STA SCDR ;A给SCDR,发送出去 AIX #1 CPX #$09 ;9个数据输出 BNE SA-REPEAT,19,DISP1: NOP LDA ONOFF EOR #$1 ;把原A.0取反,使灯闪烁 STA ONOFF STA PTA BRA MAIN*-中断矢量- ORG $FFFE ;复位矢量 DW MainInit:,20,备注说明:,单片机与PC机使用串行异步通信。在此程序下,通过PC机下的VB6.0控制程序构成一定功能的微机控制系统。,