单片机原理及其嵌入式应用实验课件.ppt

上传人(卖家):ziliao2023 文档编号:6627405 上传时间:2023-07-24 格式:PPT 页数:291 大小:1.08MB
下载 相关 举报
单片机原理及其嵌入式应用实验课件.ppt_第1页
第1页 / 共291页
单片机原理及其嵌入式应用实验课件.ppt_第2页
第2页 / 共291页
单片机原理及其嵌入式应用实验课件.ppt_第3页
第3页 / 共291页
单片机原理及其嵌入式应用实验课件.ppt_第4页
第4页 / 共291页
单片机原理及其嵌入式应用实验课件.ppt_第5页
第5页 / 共291页
点击查看更多>>
资源描述

1、整理课件1单片机原理及其嵌入式应用单片机原理及其嵌入式应用实实 验验 基本实验 综合实例整理课件2基本实验基本实验 程序框架程序框架 开关量输入输出开关量输入输出(IO)实验实验 串行通信及串行通信及AD转换实验转换实验 键盘编程实验键盘编程实验 液晶显示实验液晶显示实验 数码管显示实验数码管显示实验 FLASH编程实验编程实验 定时器溢出中断实验定时器溢出中断实验 定时器输入中断捕捉定时器输入中断捕捉实验实验整理课件3程序框架程序框架 实验目的实验目的 实验器材实验器材 硬件接线硬件接线 软件功能软件功能 程序清单程序清单 备注说明备注说明整理课件4实验目的实验目的:了解程序基本框架了解程序

2、基本框架整理课件5实验器材实验器材:1.SD-1型在线编程实验仪型在线编程实验仪2.导线若干导线若干整理课件6硬件接线硬件接线:VCCPTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCU PTC4PTB7PTB6PTB5PTB4PTB3PTB2PTB1PTB0整理课件7软件功能软件功能:PTAPTA口的模拟量输出,控制指示灯口的模拟量输出,控制指示灯 程序执行指示灯闪烁程序执行指示灯闪烁整理课件8程序清单:程序清单:文件说明文件说明 口地址定义口地址定义 数据区定义数据区定义 主程序主程序 系统初始化及中断矢量系统初

3、始化及中断矢量 延时子程序延时子程序整理课件9*-文件说明文件说明-*文件名文件名:PrgFrame.ASM PrgFrame.ASM *硬件连接硬件连接:PTA.1PTA.1接指示灯接指示灯 *程序描述程序描述:指示灯指示灯PTA.1PTA.1闪烁闪烁 *目的目的:第一个第一个Motorola MCUMotorola MCU程序框架程序框架 *说明说明:提供提供Motorola MCUMotorola MCU的编程框架,供教学入门使用的编程框架,供教学入门使用 *-整理课件10*-口地址定义口地址定义-PTA EQU$0000 PTA EQU$0000 ;A;A口数据寄存器口数据寄存器DDR

4、A EQU$0004 DDRA EQU$0004 ;A;A口数据方向寄存器口数据方向寄存器整理课件11RAMstartAddr equ$0040 ;RAMRAMstartAddr equ$0040 ;RAM的起始地址(因芯片不同可以更改)的起始地址(因芯片不同可以更改)FlashStartAddr equ$8000 ;FlashStartAddr equ$8000 ;程序开始地址(因芯片不同可以更改)程序开始地址(因芯片不同可以更改)*数据区定义(变量名定义)数据区定义(变量名定义)org RAMstartAddr ;RAMorg RAMstartAddr ;RAM的起始地址的起始地址N1 r

5、mb 1 ;N1 rmb 1 ;变量变量N1,N1,缓冲使用缓冲使用整理课件12*主程序主程序 org FlashStartAddr ;org FlashStartAddr ;程序起始地址程序起始地址MainInit:;MainInit:;复位后程序从此开始执行复位后程序从此开始执行 ;系统初始化系统初始化 SEI ;SEI ;禁止所有中断禁止所有中断 LDHX#$023F ;LDHX#$023F ;堆栈初始化,放入堆栈初始化,放入GP32GP32的的RAMRAM最高端最高端 TXSTXS JSR Init0 ;JSR Init0 ;调系统初始化子程序调系统初始化子程序Init0Init0,初

6、始学习时跳过此处初始学习时跳过此处 ;I/OI/O初始化初始化 BSET 1,DDRA ;BSET 1,DDRA ;设置设置PTA.1PTA.1为输出为输出 BSET 1,PTA ;BSET 1,PTA ;初始时,初始时,PTA.1PTA.1指示灯指示灯 暗暗 MainLoop:;MainLoop:;程序总循环入口程序总循环入口 BCLR 1,PTA ;PTA.1BCLR 1,PTA ;PTA.1指示灯指示灯“亮亮”MOV#$2,N1 ;MOV#$2,N1 ;延时子程序延时子程序DelaySubDelaySub的时间长度入口的时间长度入口 JSR DelaySub ;JSR DelaySub

7、;调用延时子程序调用延时子程序 BSET 1,PTA ;BSET 1,PTA ;初始时,初始时,PTA.1PTA.1指示灯指示灯 暗暗 MOV#$4,N1 ;MOV#$4,N1 ;延时子程序延时子程序DelaySubDelaySub的时间长度入口的时间长度入口 JSR DelaySub ;JSR DelaySub ;调用延时子程序调用延时子程序 ;-;-JMP MainLoop ;JMP MainLoop ;转总循环入口处转总循环入口处整理课件13Init0:;Init0:;系统初始化系统初始化Init0Init0子程序子程序 LDA#%00000001 ;LDA#%00000001 ;初始化

8、初始化CONFIG2CONFIG2 STA$001E STA$001E LDA#%00111101 ;LDA#%00111101 ;初始化初始化CONFIG1CONFIG1 STA$001F STA$001F CLR$0036 ;CLR$0036 ;初始化初始化PTCLPTCL MOV#$01,$0036 MOV#$01,$0036 MOV#$01,$0038 MOV#$01,$0038 MOV#$2C,$0039 MOV#$2C,$0039 MOV#$80,$003A MOV#$80,$003A BSET 5,$0036 BSET 5,$0036 BSET 7,$0037 BSET 7,$0

9、037 BSET 4,$0036 BSET 4,$0036 RTS RTS*-中断矢量中断矢量-ORG$FFFE ORG$FFFE ;复位矢量复位矢量 DW MainInitDW MainInit整理课件14延时子程序DelaySub:;延时0.1秒 PSHH ;保据寄存器HX PSHX DelaySub1:LDHX#$FFFF DelaySub2:PSHA ;保护寄存器A LDA#$FFDelaySub3:DBNZA DelaySub3 PULA DBNZX DelaySub2 DBNZA DelaySub1 PULX PULH RTS整理课件15开关量输入输出开关量输入输出(IO)实验实验

10、 实验实验目的目的 实验器材实验器材 硬件接线硬件接线 程序功能程序功能 程序清单程序清单 备注说明备注说明A.3-0A.7-4-A.3-0 COMA COMA STA PTA STA PTA LDA PTB LDA PTB ;取开关取开关PTB0PTB0状态状态,0-,0-闭合闭合 AND#%00000001 AND#%00000001 ;剩下剩下PTB0PTB0位位 STA TmpVar STA TmpVar ;放入变量放入变量TmpVarTmpVar整理课件26 NOPNOP LDA PTC LDA PTC ;取开关取开关PTC0PTC0状态状态,0-,0-闭合闭合 AND#%00000

11、001 AND#%00000001 ;剩下剩下PTC0PTC0位位 NOPNOP ADD TmpVar ADD TmpVar ;经过此运算经过此运算 若若A=0,A=0,两个均闭合两个均闭合 ;若若=1,=1,有一个闭合有一个闭合;=2,;=2,均未闭合均未闭合 CBEQA#$0,Light0 CBEQA#$0,Light0 ;比较比较,相等转移相等转移,A=0A=0转向转向Light0Light0整理课件27 NOPNOP CBEQA#$1,Light1 CBEQA#$1,Light1 ;A=1;A=1转转Light1Light1 NOP NOP ;A=2,;A=2,两排均不亮两排均不亮 L

12、DA#$FF LDA#$FF ;两排灯均不亮两排灯均不亮 1-1-不亮不亮 STA PTBSTA PTB STA PTC STA PTC BRA IO_End BRA IO_End ;转转IO_END,IO_END,延时延时整理课件28Light0:Light0:LDA#$00 LDA#$00 ;两排灯均亮两排灯均亮 0-0-亮亮 STA PTBSTA PTB STA PTC STA PTC BRA IO_End BRA IO_End ;无条件转无条件转IO_ENDIO_ENDLight1:Light1:LDA Light_BC LDA Light_BC ;两排灯之一亮两排灯之一亮 0-0-亮

13、亮 STA PTB STA PTB ;驱动驱动B B口灯口灯 NEGA NEGA ;求补命令求补命令 STA PTC STA PTC ;驱动驱动B B口灯口灯 STA Light_BC STA Light_BC ;保存状态保存状态整理课件29IO_End:IO_End:LDA#$FE LDA#$FE ;延时延时Delay1:Delay1:LDX#$FC LDX#$FCDelay2:Delay2:NOP NOP NOP NOP NOP NOP DBNZX Delay2 DBNZX Delay2 DBNZA Delay1 DBNZA Delay1 BRA Start BRA Start ;无条件转

14、开始处无条件转开始处*-整理课件30*-子程序子程序-*Init0:Init0:;系统初始化系统初始化Init0Init0子程序子程序 LDA#%00000001 LDA#%00000001 ;初始化初始化CONFIG2CONFIG2 STA$001E STA$001E LDA#%00111101 LDA#%00111101 ;初始化初始化CONFIG1CONFIG1 STA$001F STA$001F CLR$0036 CLR$0036 ;初始化初始化PTCLPTCL MOV#$01,$0036 MOV#$01,$0036 MOV#$01,$0038 MOV#$01,$0038 MOV#$2

15、C,$0039 MOV#$2C,$0039 MOV#$80,$003A MOV#$80,$003A 整理课件31 BSET 5,$0036BSET 5,$0036 BSET 7,$0037 BSET 7,$0037 BSET 4,$0036 BSET 4,$0036 RTS RTS*-复位矢量复位矢量-ORG$FFFE ORG$FFFE ;复位矢量复位矢量 DW MainInitDW MainInit整理课件32备注说明:仅作为基本教学例程仅作为基本教学例程整理课件33串行通信及串行通信及ADAD转换实验转换实验 实验目的实验目的 实验器材实验器材 硬件接线硬件接线VBVB界面界面 软件功能软

16、件功能 程序清单程序清单 备注说明备注说明整理课件34实验目的实验目的:A/DA/D转换,转换,单片机异步串行通信单片机异步串行通信 整理课件35实验器材实验器材:1.SD-1型在线编程实验仪型在线编程实验仪2.导线若干导线若干整理课件36硬件接线硬件接线:VCCPTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCU PTC4PTB7PTB6PTB5PTB4PTB3PTB2PTB1PTB0VCC整理课件37VB界面:界面:整理课件38软件功能软件功能:由由PORTBPORTB口的模拟量输入,通过单片机的口的模拟量输入,

17、通过单片机的A/DA/D转换器采集转换器采集8 8路数据,并放在路数据,并放在ADBUFADBUF开开始的地址中。始的地址中。再在再在INBUFINBUF中放开关量。中放开关量。发发8686给给PCPC机作为握手信号,进行通信测机作为握手信号,进行通信测试,试,PCPC机判断后确认,发机判断后确认,发8686作为确认信作为确认信号,单片机收到号,单片机收到8686后,把模拟量后,把模拟量0-70-7和开和开关量送关量送PCPC机显示。机显示。整理课件39程序清单:程序清单:文件说明文件说明 口地址定义口地址定义 SCI寄存器寄存器 A/D寄存器寄存器 数据区定义数据区定义 主程序主程序 A/D

18、转换转换 串行通信输出串行通信输出 串行通信输入串行通信输入 从从PC机接收数据,机接收数据,并存储后送并存储后送PTA输输出出 把在把在INBUF和和ADBUFF的数据送的数据送PC机输出机输出 中断矢量中断矢量整理课件40*-文件说明文件说明-*文件名:文件名:sci.assci.as*硬件连接:硬件连接:PORTAPORTA口输出它的口输出它的PTA7-0PTA7-0接接OUTOUT的的7-07-0号号*指示灯(指示灯(A0A0作为运行指示不受其它数据控制)作为运行指示不受其它数据控制)PORTBPORTB作为作为ADAD输入连接,输入连接,*PORTBPORTB口为模拟量输入口口为模拟

19、量输入口,PORTCPORTC的的C0-4C0-4接接ININ的的5 5个拨位开关个拨位开关0-40-4作为开关作为开关*输入串行口与微机串行口相接(输入串行口与微机串行口相接(96009600,N N,8 8,1 1)*程序描述:程序描述:1.1.由由PORTBPORTB口的模拟量输入,通过单片机的口的模拟量输入,通过单片机的A/DA/D转换器采集转换器采集8 8*路数据,并放在路数据,并放在ADBUFADBUF开始的地址中开始的地址中*2.2.再在再在INBUFINBUF中放开关量中放开关量*3.3.发发8686给给PCPC机作为握手信号,进行通信测试机作为握手信号,进行通信测试,PCPC

20、机判断后确机判断后确*认认,发发8686作为确认信号,单片机收到作为确认信号,单片机收到8686后后,把模拟量把模拟量 0-7 0-7和和*开关量送开关量送PCPC机显示机显示*目的:目的:A/DA/D转换,单片机异步串行通信转换,单片机异步串行通信 *-*整理课件41*-口地址定义口地址定义-PTA EQU$0000 PTA EQU$0000 ;A;A口数据寄存器口数据寄存器PTB EQU$0001 PTB EQU$0001 ;B;B口数据寄存器口数据寄存器PTC EQU$0002 PTC EQU$0002 ;C;C口数据寄存器口数据寄存器PTD EQU$0003 PTD EQU$0003

21、;D;D口数据寄存器口数据寄存器DDRA EQU$0004 DDRA EQU$0004 ;A;A口数据方向寄存器口数据方向寄存器DDRB EQU$0005 DDRB EQU$0005 ;B;B口数据方向寄存器口数据方向寄存器DDRC EQU$0006 DDRC EQU$0006 ;C;C口数据方向寄存器口数据方向寄存器DDRD EQU$0007 DDRD EQU$0007 ;D;D口数据方向寄存器口数据方向寄存器DDRE EQU$0008 DDRE EQU$0008 ;E;E口数据寄存器口数据寄存器整理课件42*-SCISCI寄存器寄存器-SCS1 EQU$0016 SCS1 EQU$0016

22、 ;SCI;SCI状态寄存器状态寄存器1 1B-SCTE EQU 7 B-SCTE EQU 7 ;发送缓冲区空标志位发送缓冲区空标志位B-TC EQU 6 B-TC EQU 6 ;发送完成标志位发送完成标志位B-SCRF EQU 5 B-SCRF EQU 5 ;接收器满标志位接收器满标志位SCDR EQU$0018 SCDR EQU$0018 ;SCI;SCI数据寄存器数据寄存器*-A/DA/D寄存器寄存器-ADSCR EQU$003C ADSCR EQU$003C ;A/D;A/D转换状态和控制寄存器转换状态和控制寄存器B-COCO EQU 7 B-COCO EQU 7 ;转换完成标志位转换

23、完成标志位ADR EQU$003D ADR EQU$003D ;A/D;A/D转换数据寄存器转换数据寄存器ADCLK EQU$003E ADCLK EQU$003E ;A/D;A/D转换输入时钟寄存器转换输入时钟寄存器RAMstartAddr equ$0040RAMstartAddr equ$0040;RAM;RAM的起始地址(因芯片不同可以更改)的起始地址(因芯片不同可以更改)FlashStartAddr equ$8000FlashStartAddr equ$8000;程序开始地址(因芯片不同可以更改)程序开始地址(因芯片不同可以更改)整理课件43*-数据区定义(变量定义)数据区定义(变量定

24、义)-ORG RAMstartAddrORG RAMstartAddr ;RAM ;RAM的起始地址的起始地址INBUF RMB 1 INBUF RMB 1 ;1;1字节存放字节存放5 5位开关量位开关量ADBUF RMB 8 ADBUF RMB 8 ;8;8字节存放字节存放8 8路路A/DA/D转换结果转换结果ONOFF RMB 1 ONOFF RMB 1 ;1;1字节存放从字节存放从PCPC的数据的数据 TMPVAR RMB 1 TMPVAR RMB 1 ;暂存使用暂存使用整理课件44*-主程序主程序-ORG ORG FlashStartAddr ;FlashStartAddr ;程序起始

25、地址程序起始地址MainInit:MainInit:NOP NOP LDA#$3E LDA#$3E ;A/D;A/D初始化初始化2 2分频、使用内部总线时钟分频、使用内部总线时钟 STA ADCLKSTA ADCLK LDA#$FF LDA#$FF ;定义定义PORTAPORTA输出输出 STA DDRASTA DDRA LDA#$00 LDA#$00 STA PTA STA PTA STA ONOFF STA ONOFF ;ONOFF=0;ONOFF=0 LDA#$00 LDA#$00 ;定义定义PORTBPORTB,PORTCPORTC作为输入作为输入 STA DDRBSTA DDRB S

26、TA DDRC STA DDRC整理课件45*-A/DA/D转换转换-Main:Main:NOP NOP ;循环获得循环获得8 8路路ADAD值值 LDHX#$0 LDHX#$0 ;H;H:X=0X=0GA-REPEAT:GA-REPEAT:TXA TXA ;X;X寄存器送到累加器寄存器送到累加器 STA ADSCR STA ADSCR ;选定一路选定一路A/DA/D,启动转换启动转换 BRCLR 7,ADSCR,BRCLR 7,ADSCR,*;等待等待A/DA/D转换完成转换完成 LDA ADR LDA ADR ;A/D;A/D转换结果给转换结果给A A STA ADBUF,X STA AD

27、BUF,X ;A;A给给 ADBUF+XADBUF+X,储存数据储存数据 AIX#1 AIX#1 ;下一存储单元下一存储单元 CPX#$08 CPX#$08 ;判断判断8 8路转换是否完成路转换是否完成 BNE GA-REPEAT BNE GA-REPEAT ;循环循环8 8次转换次转换8 8个通道模拟量个通道模拟量整理课件46*-串行通信输出串行通信输出-GET-IN:GET-IN:LDA PTC LDA PTC ;5;5位开关量采集位开关量采集 STA INBUF STA INBUF ;暂放暂放INBUFINBUF NOP NOP LDA#$56 LDA#$56 ;把把8686(1616进

28、制数进制数5656)为握)为握 ;手信号送出到手信号送出到PCPC中中 BRCLR 7,SCS1,BRCLR 7,SCS1,*;等待以前数据全部发出,等待以前数据全部发出,;SCTESCTE置置1 1,发送缓冲区空,发送缓冲区空 STA SCDR STA SCDR ;发送缓冲区空时,发送缓冲区空时,;可向可向SCISCI数据寄存器送数数据寄存器送数 整理课件47*-串行通信输入串行通信输入-NOPNOP LDHX#0 LDHX#0WS-REPE1:WS-REPE1:BRSET 5,SCS1,WS-RECE1 BRSET 5,SCS1,WS-RECE1 ;测试测试SCRFSCRF位,位,;判断接

29、收缓冲器是否满判断接收缓冲器是否满 NOPNOP NOP NOP AIX#1 AIX#1 ;延时等待延时等待 CPHX#$FFFFCPHX#$FFFF BNE WS-REPE1 BNE WS-REPE1 BRA DISP1 BRA DISP1 ;超时退出超时退出WS-RECE1:WS-RECE1:LDA SCDR LDA SCDR ;读取收到的数据读取收到的数据 整理课件48 CMP#$56 CMP#$56 ;判断是否为确认信号判断是否为确认信号8686 BNE DISP1 BNE DISP1 ;不是退出,是就开始通信不是退出,是就开始通信 NOPNOP LDHX#0 LDHX#0WS-REP

30、E2:WS-REPE2:BRSET 5,SCS1,WS-RECE2 BRSET 5,SCS1,WS-RECE2 ;测试测试SCRFSCRF位,位,;判断接收缓冲器是否满判断接收缓冲器是否满 NOPNOP NOP NOP AIX#1 AIX#1 ;延时等待延时等待 CPHX#$6688CPHX#$6688 BNE WS-REPE2 BNE WS-REPE2 ;超时退出超时退出 BRA DISP1BRA DISP1整理课件49*-从从PCPC机接收数据,并储存后送机接收数据,并储存后送PTAPTA输出输出-*-(A.0A.0不受影响)不受影响)-WS-RECE2WS-RECE2 LDA SCDR

31、LDA SCDR NOP NOP AND#$FE AND#$FE ;A0=0;A0=0 STA TMPVAR STA TMPVAR ;暂时缓存暂时缓存 LDA ONOFFLDA ONOFF AND#$1 AND#$1 ;留下留下A.0A.0 ORA TMPVAR ORA TMPVAR ;处理接收的数据,放在处理接收的数据,放在A A中中 STA ONOFF STA ONOFF ;储存接收数据在储存接收数据在ONOFFONOFF中中 NOP NOP ;送送A/DA/D值值整理课件50*-把在把在INBUFINBUF和和ADBUFFADBUFF的数据送的数据送PCPC机输出机输出-LDHX#$0L

32、DHX#$0SA-REPEAT:SA-REPEAT:LDA INBUF,X LDA INBUF,X BRCLR 7,SCS1,BRCLR 7,SCS1,*;SCTE;SCTE置置1 1,;发送缓冲区空发送缓冲区空 STA SCDR STA SCDR ;A;A给给SCDRSCDR,发送出去发送出去 AIX#1AIX#1 CPX#$09 CPX#$09 ;9;9个数据输出个数据输出 BNE SA-REPEATBNE SA-REPEAT整理课件51DISP1:DISP1:NOP NOP LDA ONOFF LDA ONOFF EOR#$1 EOR#$1 ;把原把原A.0A.0取反,使灯闪烁取反,使灯

33、闪烁 STA ONOFFSTA ONOFF STA PTA STA PTA BRA MAIN BRA MAIN*-中断矢量中断矢量-ORG$FFFE ORG$FFFE ;复位矢量复位矢量 DW MainInit:DW MainInit:整理课件52备注说明备注说明:单片机与单片机与PCPC机使用串行异机使用串行异步通信。在此程序下,通过步通信。在此程序下,通过PCPC机下的机下的VB6.0VB6.0控制程序构成一定控制程序构成一定功能的微机控制系统。功能的微机控制系统。整理课件53键盘编程实验键盘编程实验 实验目的实验目的 实验器材实验器材 硬件接线硬件接线 软件功能软件功能 程序清单程序清单

34、 备注说明备注说明整理课件54实验目的实验目的:键盘查询,键盘中断,键盘查询,键盘中断,键值识别,键盘编码键值识别,键盘编码.整理课件55实验器材实验器材:1.SD-1型在线编程实验板型在线编程实验板2.导线若干导线若干整理课件56硬件接线硬件接线:红线为学生接线红线为学生接线PTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCUPTC4内置电阻内置电阻VCC整理课件57 2 DE 键值表键值表:1 EE 3 BE 4 7E 5 ED 6 DD 7 DD 8 7D 9 EB 0 DB A BB B 7B C E7 D

35、D7 E B7 F 77键值键值定义定义整理课件58软件功能软件功能:开始运行时,指示灯开始运行时,指示灯7 7亮,等待键盘按键。亮,等待键盘按键。按下按下“D”D”键进入运行状态,指示灯键进入运行状态,指示灯7 7闪闪烁。烁。在指示灯在指示灯7 7闪烁状态,按闪烁状态,按“0-90-9”任意一任意一键,指示灯键,指示灯3-03-0显示对应的二进制值(显示对应的二进制值(0 0为灯亮,为灯亮,1 1为灯暗,如为灯暗,如1 1的二进制为的二进制为00010001,显示应为显示应为“亮亮亮暗亮亮亮暗”),按),按“A-F”A-F”任任意一键,指示灯意一键,指示灯3-03-0全暗。全暗。整理课件59

36、程序清单程序清单:程序说明程序说明 口地址定义口地址定义 数据区定义数据区定义 主程序主程序 键盘中断初始化键盘中断初始化子程序子程序 扫描读键值子程序扫描读键值子程序 键盘中断子程序键盘中断子程序 键盘转化为具体值键盘转化为具体值子程序子程序 延时程序子程序延时程序子程序 中断矢量中断矢量整理课件60*-程序说明程序说明-*文件名:文件名:key.asmkey.asm*使用使用4 4*4 4键盘实现输入控制键盘实现输入控制*硬件连接:硬件连接:*PTA7-4PTA7-4接接4 4根键盘列线(根键盘列线(X4-1X4-1),),PTA3-0PTA3-0接接4 4根键盘行线根键盘行线*(Y4-1

37、Y4-1)*PTC4 PTC4接指示灯接指示灯7 7(OUT7OUT7),),PTC3-0PTC3-0分别接指示灯分别接指示灯3-03-0(OUT3-0OUT3-0)*程序描述:程序描述:1.1.开始运行时,指示灯开始运行时,指示灯7 7亮,等待键盘按键亮,等待键盘按键*2.2.按下按下“D”D”键进入运行状态,指示灯键进入运行状态,指示灯7 7闪烁闪烁*3.3.在指示灯在指示灯7 7闪烁状态,按闪烁状态,按“0-90-9”任意一键,指示灯任意一键,指示灯3-03-0*显示对应的二进制值(显示对应的二进制值(0 0为灯亮,为灯亮,1 1为灯暗,如为灯暗,如1 1的二进制为的二进制为000100

38、01*显示应为显示应为“亮亮亮暗亮亮亮暗”),按),按“A-F”A-F”任意一键,指示灯任意一键,指示灯3-03-0全暗。全暗。*目的:键盘查询,键盘中断,键值识别,键盘编码目的:键盘查询,键盘中断,键值识别,键盘编码*-*整理课件61*-口地址定义口地址定义-DDRA EQU$0004 ;A;A口数据方向寄存器口数据方向寄存器PTA EQU$0000 ;A;A口数据寄存器口数据寄存器PTAPUE EQU$000D ;A;A口上拉电阻允许寄存器口上拉电阻允许寄存器DDRC EQU$0006 ;C;C口数据方向寄存器口数据方向寄存器PTC EQU$0002 ;C;C口数据寄存器口数据寄存器INT

39、KBSCR EQU$001A ;键盘状态和控制寄存器键盘状态和控制寄存器INTKBIER EQU$001B ;键盘中断允许寄存器键盘中断允许寄存器整理课件62*-数据区定义(变量定义)数据区定义(变量定义)-ORG$0090ORG$0090TMPVAR1 RMB 1 TMPVAR1 RMB 1 ;变量变量TMPVAR1TMPVAR1,缓冲使用缓冲使用TMPVAR2 RMB 1 TMPVAR2 RMB 1 ;变量变量TMPVAR2TMPVAR2,缓冲使用缓冲使用KBVALUE RMB 1 KBVALUE RMB 1 ;存放键盘按键值存放键盘按键值PTCSTATE RMB 1 PTCSTATE R

40、MB 1 ;PTC;PTC口状态变量口状态变量RAMstartAddr equ$0040RAMstartAddr equ$0040;RAM;RAM的起始地址(因芯片不同可以更改)的起始地址(因芯片不同可以更改)FlashStartAddr equ$8000FlashStartAddr equ$8000;程序开始地址程序开始地址(因芯片不同可以更改)(因芯片不同可以更改)*整理课件63 ORG ORG FlashStartAddrFlashStartAddr ;程序起始地址程序起始地址*-主程序主程序-MainInit:MainInit:NOP NOP LDA#$00 LDA#$00 ;定义定义

41、C C口之前复位口之前复位PTCPTC STA PTC STA PTC LDA#%00011111 LDA#%00011111 ;定义定义C C口口4-04-0为输出为输出 STA DDRC STA DDRC ;C;C口接指示灯口接指示灯 STA PTC STA PTC ;初始时指示灯熄灭初始时指示灯熄灭 BCLR 4,PTC BCLR 4,PTC ;PTC4;PTC4为为0 0,指示灯,指示灯7 7点亮点亮 ;表示进入开始状态表示进入开始状态整理课件64;-;-A A口接键盘,查询等待按键口接键盘,查询等待按键-LDA#$00 LDA#$00 ;定义定义A A口前复位口前复位PTAPTA S

42、TA PTA STA PTA LDA#%00001111 LDA#%00001111 STA DDRA STA DDRA LDA#%11110000 LDA#%11110000 STA PTAPUE STA PTAPUE整理课件65MainIni1:MainIni1:JSR KBA JSR KBA ;取得键值在取得键值在A A中中 STA KBVALUE STA KBVALUE ;键值放在键值放在KBVALUEKBVALUE中中 ;作为作为KBdefKBdef的入口的入口 JSR KBdef JSR KBdef ;具体值在具体值在A A中中 cmp#$46 cmp#$46 ;ASCII;ASC

43、II(“F”“F”)是否为是否为$46$46 BNE MainIni1 BNE MainIni1 ;不是等待不是等待“F”F”键键;-;-设置键盘中断设置键盘中断-JSR KBInit JSR KBInit ;已按已按“F”F”键,进入运行状态,键,进入运行状态,;执行键盘中断初始化子程序执行键盘中断初始化子程序 BCLR 1,INTKBSCR BCLR 1,INTKBSCR ;开放键盘中断开放键盘中断 CLICLI整理课件66;-开始总循环处理键盘开始总循环处理键盘-Start:Start:NOP NOP;-使灯闪烁使灯闪烁-BCLR 4,PTC BCLR 4,PTC ;PTA4=0;PTA

44、4=0,电亮指示灯电亮指示灯7 7 LDA#$08LDA#$08 JSR Delaysub JSR Delaysub BSET 4,PTC BSET 4,PTC ;PTA4=1;PTA4=1,熄灭指示灯熄灭指示灯7 7 LDA#$08LDA#$08 JSR Delaysub JSR Delaysub 整理课件67 JSR Kbde JSR Kbde ;执行键盘转化为具体值子程序,执行键盘转化为具体值子程序,;转成键定义值转成键定义值 CMP#$39 CMP#$39 ;测试是否是测试是否是0-90-9 BHI Start1 BHI Start1 ;大于大于ASCIIASCII(“9”“9”)到到

45、Start1Start1 SUB#$30 SUB#$30 ;数字实际值数字实际值=ASCIIASCII值值-$30-$30 STA PTC STA PTC ;送送PTCPTC口口,由指示灯由指示灯3-03-0显示显示 BRA StartBRA StartStart1:Start1:LDA#$FF LDA#$FF ;大于大于ASCIIASCII(“9”“9”),消灭指示灯消灭指示灯 STA PTCSTA PTC JMP Start JMP Start ;继续循环处理继续循环处理整理课件68*-键盘中断初始化子程序(从键盘中断初始化子程序(从KBInitKBInit开始)开始)-*功能:对被定义为

46、键盘中断的引脚初始化,但未开放键盘中断功能:对被定义为键盘中断的引脚初始化,但未开放键盘中断*占用占用CPUCPU内寄存器:内寄存器:A A*-KBInit:KBInit:LDA#$00 LDA#$00 ;定义定义A A口之前复位口之前复位PTAPTA STA PTA STA PTA LDA#%00001111 LDA#%00001111 ;定义定义A A口口7-47-4输入作为列,输入作为列,;3-0 ;3-0输出作为行输出作为行 STA DDRASTA DDRA LDA#%11110000 LDA#%11110000 ;定义定义A A口口7-47-4有上拉电阻有上拉电阻 STA PTAPU

47、ESTA PTAPUE BSET 1,INTKBSCR BSET 1,INTKBSCR ;屏蔽键盘中断屏蔽键盘中断 LDA#%11110000 LDA#%11110000 ;允许允许KBIE7-4PINKBIE7-4PIN中断进入中断进入 STA INTKBIERSTA INTKBIER BSET 2,INTKBSCR BSET 2,INTKBSCR ;清除键盘中断清除键盘中断 RTSRTS整理课件69*-扫描读键值子程序(从扫描读键值子程序(从KBAKBA开始)开始)-*功能功能:扫描一次接在扫描一次接在PTAPTA口的口的4 4*4 4键盘(键盘(PTA7-4PTA7-4接接4 4根键盘根

48、键盘*(X4-1X4-1),),PTA3-0PTA3-0接接4 4根键盘行线(根键盘行线(Y4-1Y4-1)上的按键(使上的按键(使*用行扫描法),键值放在用行扫描法),键值放在A A中中,若无按键,若无按键,A A中值中值$FFFF*占用内存:占用内存:TMPVAR1TMPVAR1(缓冲使用)缓冲使用)*出口:出口:A=A=键值键值*-KBA:KBA:MOV#%11111110,TMPVAR1 MOV#%11111110,TMPVAR1 ;第一根行线为第一根行线为0 0 LDX#$04 LDX#$04 ;扫描扫描4 4根行线根行线KB1:KB1:LDA PTA LDA PTA ;取取PTAP

49、TA给给A A ORA#%00001111 ORA#%00001111 ;PTA7-4;PTA7-4保留原态,保留原态,PTA3-0PTA3-0为为1 1 AND TMPVAR1 AND TMPVAR1 ;令令PTAn=0PTAn=0,n=0n=0,1 1,2 2,3 3 STA PTA STA PTA ;处理后给处理后给PTAPTA以便查询以便查询整理课件70 NOPNOP NOP NOP LDA PTA LDA PTA ;查第查第n n列上是否有键按下列上是否有键按下 AND#%11110000 AND#%11110000 ;保留保留PTA7-4PTA7-4列值,令低列值,令低PTA3-0

50、=0PTA3-0=0 CBEQA#$F0,KB2 CBEQA#$F0,KB2 ;A;A等于等于$F0F0,本行线没键按下本行线没键按下 ;A A不等于不等于$F0,F0,本行有键按下本行有键按下 LDA PTA LDA PTA ;A;A放键值放键值 BRA KB3 BRA KB3 ;转到转到KB3KB3结束中断结束中断KB2:KB2:SEC SEC ;令令C=1C=1 ROL TMPVAR1 ROL TMPVAR1 ;使下一个行线为使下一个行线为0 0,查下一行,查下一行 DBNZX KB1 DBNZX KB1 ;对行线循环对行线循环 LDA#$FF LDA#$FF ;没有键被按下为没有键被按

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机原理及其嵌入式应用实验课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|