1 / 20

串行通信及 AD 转换实验

实验目的 实验器材 硬件接线 VB 界面. 软件功能 程序清单 备注说明. 串行通信及 AD 转换实验. <<<. 实验目的 :. A/D 转换, 单片机异步串行通信. 实验器材 :. 1.SD-1 型在线编程实验仪 2. 导线若干. PTA7. PTB7. PTA6. PTB6. PTB5. PTA5. PTB4. VCC. PTA4. PTA3. PTB3. PTA2. MOTOROLA GP32 MCU. PTB2. PTA1. PTB1. PTA0. PTB0. PTC0. PTC1. PTC2. PTC3.

laasya
Download Presentation

串行通信及 AD 转换实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验目的 实验器材 硬件接线 VB界面 软件功能 程序清单 备注说明 串行通信及AD转换实验 <<<

  2. 实验目的: A/D转换, 单片机异步串行通信

  3. 实验器材: 1.SD-1型在线编程实验仪 2.导线若干

  4. PTA7 PTB7 PTA6 PTB6 PTB5 PTA5 PTB4 VCC PTA4 PTA3 PTB3 PTA2 MOTOROLA GP32 MCU PTB2 PTA1 PTB1 PTA0 PTB0 PTC0 PTC1 PTC2 PTC3 PTC4 VCC 硬件接线:

  5. VB界面:

  6. 软件功能: • 由PORTB口的模拟量输入,通过单片机的A/D转换器采集8路数据,并放在ADBUF开始的地址中。 • 再在INBUF中放开关量。 • 发86给PC机作为握手信号,进行通信测试,PC机判断后确认,发86作为确认信号,单片机收到86后,把模拟量0-7和开关量送PC机显示。

  7. 文件说明 口地址定义 SCI寄存器 A/D寄存器 数据区定义 主程序 A/D转换 串行通信输出 串行通信输入 从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机作为握手信号,进行通信测试,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口数据寄存器

  10. *----SCI寄存器----------------------------- SCS1 EQU $0016 ;SCI状态寄存器1 B-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 $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 STA ONOFF ;ONOFF=0 LDA #$00 ;定义PORTB,PORTC作为输入 STA DDRB STA DDRC

  13. *-------A/D转换------------------------------ Main: NOP ;循环获得8路AD值 LDHX #$0 ;H:X=0 GA-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个通道模拟量

  14. *----串行通信输出------------------------------- 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 #0 WS-REPE1: BRSET 5,SCS1,WS-RECE1 ;测试SCRF位, ;判断接收缓冲器是否满 NOP NOP AIX #1 ;延时等待 CPHX #$FFFF BNE WS-REPE1 BRA DISP1 ;超时退出 WS-RECE1: LDA SCDR ;读取收到的数据

  16. CMP #$56 ;判断是否为确认信号86 BNE DISP1 ;不是退出,是就开始通信 NOP LDHX #0 WS-REPE2: BRSET 5,SCS1,WS-RECE2 ;测试SCRF位, ;判断接收缓冲器是否满 NOP NOP AIX #1 ;延时等待 CPHX #$6688 BNE WS-REPE2 ;超时退出 BRA DISP1

  17. *----从PC机接收数据,并储存后送PTA输出----------*----从PC机接收数据,并储存后送PTA输出---------- *----(A.0不受影响)---------------------------- WS-RECE2 LDA SCDR NOP AND #$FE ;A0=0 STA TMPVAR ;暂时缓存 LDA ONOFF AND #$1 ;留下A.0 ORA TMPVAR ;处理接收的数据,放在A中 STA ONOFF ;储存接收数据在ONOFF中 NOP ;送A/D值

  18. *----把在INBUF和ADBUFF的数据送PC机输出-------- LDHX #$0 SA-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控制程序构成一定功能的微机控制系统。

More Related