1 / 18

开关量输入输出 (IO) 实验

开关量输入输出 (IO) 实验. 实验目的 实验器材 硬件接线 程序功能 程序清单 备注说明. <<<. 实验目的 :. 掌握 I/O 口的基本使用方法. 实验器材 :. 1.SD-1 型在线编程实验仪 2. 导线若干. vcc. PTA7. PTA6. PTA5. PTA4. PTA3. vcc. PTA2. MOTOROLA GP32 MCU. PTA1. PTA0. PTB1. PTC1. PTB0. PTC0. vcc. 红线为学生接线. 硬件接线 :. 程序功能 :.

andie
Download Presentation

开关量输入输出 (IO) 实验

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

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

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

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

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

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

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

  8. *-----口地址定义————————————————— 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口灯的状态

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

  10. 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口灯的状态赋初值

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

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

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

  14. 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 ;保存状态

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

  16. *------子程序--------------------------* 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

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

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

More Related