1 / 291

单片机原理及其嵌入式应用 实 验

单片机原理及其嵌入式应用 实 验. 基本实验 综合实例. <<<. 程序框架 开关量输入输出( IO) 实验 串行通信及 AD 转换实验 键盘编程实验 液晶显示实验. 数码管显示实验 FLASH 编程实验 定时器溢出中断实验 定时器输入中断捕捉实验. 基本实验. <<<. 实验目的 实验器材 硬件接线. 软件功能 程序清单 备注说明. 程序框架. <<<. 实验目的:. 了解程序基本框架. 实验器材:. 1. SD-1 型在线编程实验仪 2.导线若干. PTA7. PTB7. PTA6. PTB6. PTB5. PTA5.

evelia
Download Presentation

单片机原理及其嵌入式应用 实 验

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. 单片机原理及其嵌入式应用实 验 • 基本实验 • 综合实例 <<<

  2. 程序框架 开关量输入输出(IO)实验 串行通信及AD转换实验 键盘编程实验 液晶显示实验 数码管显示实验 FLASH编程实验 定时器溢出中断实验 定时器输入中断捕捉实验 基本实验 <<<

  3. 实验目的 实验器材 硬件接线 软件功能 程序清单 备注说明 程序框架 <<<

  4. 实验目的: 了解程序基本框架

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

  6. 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 硬件接线:

  7. 软件功能: • PTA口的模拟量输出,控制指示灯 • 程序执行指示灯闪烁

  8. 文件说明 口地址定义 数据区定义 主程序 系统初始化及中断矢量 延时子程序 程序清单:

  9. *---------文件说明------------------------------------ *文件名:PrgFrame.ASM *硬件连接:PTA.1接指示灯 *程序描述:指示灯PTA.1闪烁 *目的:第一个Motorola MCU程序框架 *说明:提供Motorola MCU的编程框架,供教学入门使用 *-----------------------------------------------------

  10. *----口地址定义---------------------------- PTA EQU $0000 ;A口数据寄存器 DDRA EQU $0004 ;A口数据方向寄存器

  11. RAMstartAddr equ $0040 ;RAM的起始地址(因芯片不同可以更改) FlashStartAddr equ $8000 ;程序开始地址(因芯片不同可以更改) *数据区定义(变量名定义)—————————————————— org RAMstartAddr ;RAM的起始地址 N1 rmb 1 ;变量N1,缓冲使用

  12. *主程序——————————————————————————————*主程序—————————————————————————————— org FlashStartAddr ;程序起始地址 MainInit: ;复位后程序从此开始执行 ;系统初始化 SEI ;禁止所有中断 LDHX #$023F ;堆栈初始化,放入GP32的RAM最高端 TXS JSR Init0 ;调系统初始化子程序Init0,初始学习时跳过此处 ;I/O初始化 BSET 1,DDRA ;设置PTA.1为输出 BSET 1,PTA ;初始时,PTA.1指示灯"暗" MainLoop: ;程序总循环入口 BCLR 1,PTA ;PTA.1指示灯“亮” MOV #$2,N1 ;延时子程序DelaySub的时间长度入口 JSR DelaySub ;调用延时子程序 BSET 1,PTA ;初始时,PTA.1指示灯"暗" MOV #$4,N1 ;延时子程序DelaySub的时间长度入口 JSR DelaySub ;调用延时子程序 ;------------------------------------------------------- JMP MainLoop ;转总循环入口处

  13. Init0: ;系统初始化Init0子程序 LDA #%00000001 ;初始化CONFIG2 STA $001E LDA #%00111101 ;初始化CONFIG1 STA $001F CLR $0036 ;初始化PTCL MOV #$01,$0036 MOV #$01,$0038 MOV #$2C,$0039 MOV #$80,$003A BSET 5,$0036 BSET 7,$0037 BSET 4,$0036 RTS *----中断矢量--------------------------------- ORG $FFFE ;复位矢量 DW MainInit

  14. 延时子程序 DelaySub: ;延时0.1秒 PSHH ;保据寄存器HX PSHX DelaySub1: LDHX #$FFFF DelaySub2: PSHA ;保护寄存器A LDA #$FF DelaySub3: DBNZA DelaySub3 PULA DBNZX DelaySub2 DBNZA DelaySub1 PULX PULH RTS

  15. 开关量输入输出(IO)实验 • 实验目的 • 实验器材 • 硬件接线 • 程序功能 • 程序清单 • 备注说明 <<<

  16. 实验目的: 掌握I/O口的基本使用方法

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

  18. vcc PTA7 PTA6 PTA5 PTA4 PTA3 vcc PTA2 MOTOROLA GP32 MCU PTA1 PTA0 PTB1 PTC1 PTB0 PTC0 vcc 黄线为学生接线 硬件接线:

  19. 程序功能: • 开关PTA7-4分别控制着指示灯PTA3-0 亮暗 • 开关PTB0\PTC0 其中之一闭合,指示灯PTB7-1与PTC1交替暗亮; 若两个均未闭合,则指示灯PTB1与PTC1 均不亮; 若两个均闭合,则两个指示灯均亮.

  20. 程序说明 口地址定义 变量定义 主程序 初始化子程序 复位矢量 程序清单:

  21. *------程序说明--------------------------------* *文件名:IOEXMA.ASM *硬件连接:PTA7-4接开关,PTA3-0接指示灯 *PTB1接指示灯,PTB0接开关 *PTC1接指示灯,PTC0接开关 *程序描述:①开关PTA7-4分别控制着指示灯PTA3-0暗 * ②开关PTB0、PCT0其中之一闭合指示PTB7-1 * 与PTC1交替暗亮,若两个均未闭合则指示灯 * PTB1与PTC1均不亮,若两个均闭合则两排 * 指示灯均亮。 *目的:I/O口的基本使用方法 *说明:仅作为基本教学例程 *----------------------------------------------*

  22. *-----口地址定义—————————————————*-----口地址定义————————————————— DDRA equ $0004 ;A口数据方向寄存器 PTA equ $0000 ;A口数据寄存器 PTAPUE equ $000D ;A口上拉电阻允许寄存器 DDRB equ $0005 ;B口数据方向寄存器 PTB equ $0001 ;B口数据寄存器 DDRC equ $0006 ;C口数据方向寄存器 PTC equ $0002 ;C口数据寄存器 RAMstartAddr equ $0040 ;RAM的起始地址(因芯片不同可以更改) FlashStartAddr equ $8000 ;程序开始地址(因芯片不同可以更改) *-----数据区定义(变量名定义)—————————— org RAMstartAddr TmpVar rmb 1 ;变量TmpVar,缓冲使用 Light_BC rmb 1 ;BC口灯的状态

  23. *------主程序————————————————*------主程序———————————————— org FlashStartAddr ;程序起始地址 MainInit: NOP ;初始化—————— SEI ;禁止所有中断 LDHX #$023F ;堆栈初始化, ;放GP32的RAM最高端 TXS JSR Init0 ;调系统初始化子程序Init0, ;初始学习时跳过此处

  24. LDA #%00001111 ;定义A口7-4为输入,3-0为输出 STA DDRA LDA #%11110000 ;定义A口7-4有上拉电阻 STA PTAPUE LDA #%11111110 ;定义B口7-1为输出,0为输入 STA DDRB STA DDRC ;定义C口7-1为输出,0为输入 MOV #$FF,Light_BC ;BC口灯的状态赋初值

  25. Start: ;程序总循环入口—— NOP LDA PTA ;读取A口状态 NSA ;A口7-4输入控制A口3-0输出 ;刚好为A.7-4->A.3-0 COMA STA PTA LDA PTB ;取开关PTB0状态,0-闭合 AND #%00000001 ;剩下PTB0位 STA TmpVar ;放入变量TmpVar

  26. NOP LDA PTC ;取开关PTC0状态,0-闭合 AND #%00000001 ;剩下PTC0位 NOP ADD TmpVar ;经过此运算 若A=0,两个均闭合 ;若=1,有一个闭合;=2,均未闭合 CBEQA #$0,Light0 ;比较,相等转移,A=0转向Light0

  27. NOP CBEQA #$1,Light1 ;A=1转Light1 NOP ;A=2,两排均不亮 LDA #$FF ;两排灯均不亮 1-不亮 STA PTB STA PTC BRA IO_End ;转IO_END,延时

  28. Light0: LDA #$00 ;两排灯均亮 0-亮 STA PTB STA PTC BRA IO_End ;无条件转IO_END Light1: LDA Light_BC ;两排灯之一亮 0-亮 STA PTB ;驱动B口灯 NEGA ;求补命令 STA PTC ;驱动B口灯 STA Light_BC ;保存状态

  29. IO_End: LDA #$FE ;延时 Delay1: LDX #$FC Delay2: NOP NOP NOP DBNZX Delay2 DBNZA Delay1 BRA Start ;无条件转开始处 *-------------------------------------------

  30. *------子程序--------------------------* Init0: ;系统初始化Init0子程序 LDA #%00000001 ;初始化CONFIG2 STA $001E LDA #%00111101 ;初始化CONFIG1 STA $001F CLR $0036 ;初始化PTCL MOV #$01,$0036 MOV #$01,$0038 MOV #$2C,$0039 MOV #$80,$003A

  31. BSET 5,$0036 BSET 7,$0037 BSET 4,$0036 RTS *--------复位矢量---------------------------- ORG $FFFE ;复位矢量 DW MainInit

  32. 备注说明: • 仅作为基本教学例程

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

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

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

  36. 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 硬件接线:

  37. VB界面:

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

  39. 文件说明 口地址定义 SCI寄存器 A/D寄存器 数据区定义 主程序 A/D转换 串行通信输出 串行通信输入 从PC机接收数据,并存储后送PTA输出 把在INBUF和ADBUFF的数据送PC机输出 中断矢量 程序清单:

  40. *---------文件说明-------------------------------------------**---------文件说明-------------------------------------------* *文件名: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转换,单片机异步串行通信 *------------------------------------------------------------*

  41. *----口地址定义---------------------------- 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口数据寄存器

  42. *----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 ;程序开始地址(因芯片不同可以更改)

  43. *----数据区定义(变量定义)-------------- ORG RAMstartAddr ;RAM的起始地址 INBUF RMB 1 ;1字节存放5位开关量 ADBUF RMB 8 ;8字节存放8路A/D转换结果 ONOFF RMB 1 ;1字节存放从PC的数据 TMPVAR RMB 1 ;暂存使用

  44. *----主程序--------------------------------- 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

  45. *-------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个通道模拟量

  46. *----串行通信输出------------------------------- GET-IN: LDA PTC ;5位开关量采集 STA INBUF ;暂放INBUF NOP LDA #$56 ;把86(16进制数56)为握 ;手信号送出到PC中 BRCLR 7,SCS1,* ;等待以前数据全部发出, ;SCTE置1,发送缓冲区空 STA SCDR ;发送缓冲区空时, ;可向SCI数据寄存器送数

  47. *----串行通信输入----------------------------- 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 ;读取收到的数据

  48. 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

  49. *----从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值

  50. *----把在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

More Related