




已阅读5页,还剩287页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,单片机原理及其嵌入式应用实 验,基本实验综合实例,2,基本实验,程序框架开关量输入输出(IO)实验串行通信及AD转换实验键盘编程实验液晶显示实验,数码管显示实验FLASH编程实验定时器溢出中断实验定时器输入中断捕捉实验,3,程序框架,实验目的实验器材硬件接线,软件功能程序清单备注说明,4,实验目的:,了解程序基本框架,5,实验器材:,1.SD-1型在线编程实验仪2.导线若干,6,硬件接线:,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 #$FFDelaySub3: DBNZA DelaySub3 PULA DBNZX DelaySub2 DBNZA DelaySub1 PULX PULH RTS,15,开关量输入输出(IO)实验,实验目的实验器材硬件接线程序功能程序清单备注说明,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_ENDLight1: LDA Light_BC ;两排灯之一亮 0-亮 STA PTB ;驱动B口灯 NEGA ;求补命令 STA PTC ;驱动B口灯 STA Light_BC ;保存状态,29,IO_End: LDA #$FE ;延时Delay1: LDX #$FCDelay2: 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,串行通信及AD转换实验,实验目的实验器材硬件接线VB界面,软件功能程序清单备注说明,34,实验目的:,A/D转换,单片机异步串行通信,35,实验器材:,1.SD-1型在线编程实验仪2.导线若干,36,硬件接线:,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状态寄存器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 $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=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个通道模拟量,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 #0WS-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 #0WS-REPE2: BRSET 5,SCS1,WS-RECE2 ;测试SCRF位, ;判断接收缓冲器是否满 NOP NOP AIX #1 ;延时等待 CPHX #$6688 BNE WS-REPE2 ;超时退出 BRA DISP1,49,*-从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 #$0SA-REPEAT: LDA INBUF,X BRCLR 7,SCS1,* ;SCTE置1, ;发送缓冲区空 STA SCDR ;A给SCDR,发送出去 AIX #1 CPX #$09 ;9个数据输出 BNE SA-REPEAT,51,DISP1: NOP LDA ONOFF EOR #$1 ;把原A.0取反,使灯闪烁 STA ONOFF STA PTA BRA MAIN*-中断矢量- ORG $FFFE ;复位矢量 DW MainInit:,52,备注说明:,单片机与PC机使用串行异步通信。在此程序下,通过PC机下的VB6.0控制程序构成一定功能的微机控制系统。,53,键盘编程实验,实验目的实验器材硬件接线软件功能程序清单备注说明,54,实验目的:,键盘查询,键盘中断,键值识别,键盘编码.,55,实验器材:,1.SD-1型在线编程实验板2.导线若干,56,硬件接线:,内置电阻,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 D7,E B7,F 77,键值,定义,58,软件功能:,开始运行时,指示灯7亮,等待键盘按键。按下“D”键进入运行状态,指示灯7闪烁。在指示灯7闪烁状态,按“0-9”任意一键,指示灯3-0显示对应的二进制值(0为灯亮,1为灯暗,如1的二进制为0001,显示应为“亮亮亮暗”),按“A-F”任意一键,指示灯3-0全暗。,59,程序清单:,程序说明口地址定义数据区定义主程序键盘中断初始化子程序,扫描读键值子程序键盘中断子程序键盘转化为具体值子程序延时程序子程序中断矢量,60,*-程序说明-*文件名:key.asm*使用4*4键盘实现输入控制*硬件连接:* PTA7-4接4根键盘列线(X4-1),PTA3-0接4根键盘行线* (Y4-1)* PTC4接指示灯7(OUT7),PTC3-0分别接指示灯3-0(OUT3-0)*程序描述:1.开始运行时,指示灯7亮,等待键盘按键* 2.按下“D”键进入运行状态,指示灯7闪烁* 3.在指示灯7闪烁状态,按“0-9”任意一键,指示灯3-0*显示对应的二进制值(0为灯亮,1为灯暗,如1的二进制为0001*显示应为“亮亮亮暗”),按“A-F”任意一键,指示灯3-0全暗。*目的:键盘查询,键盘中断,键值识别,键盘编码*-*,61,*-口地址定义-DDRA EQU $0004 ;A口数据方向寄存器PTA EQU $0000 ;A口数据寄存器PTAPUE EQU $000D ;A口上拉电阻允许寄存器DDRC EQU $0006 ;C口数据方向寄存器PTC EQU $0002 ;C口数据寄存器INTKBSCR EQU $001A ;键盘状态和控制寄存器INTKBIER EQU $001B ;键盘中断允许寄存器,62,*-数据区定义(变量定义)- ORG $0090TMPVAR1 RMB 1 ;变量TMPVAR1,缓冲使用TMPVAR2 RMB 1 ;变量TMPVAR2,缓冲使用KBVALUE RMB 1 ;存放键盘按键值PTCSTATE RMB 1 ;PTC口状态变量RAMstartAddr equ $0040 ;RAM的起始地址(因芯片不同可以更改)FlashStartAddr equ $8000 ;程序开始地址(因芯片不同可以更改)*,63,ORG FlashStartAddr ;程序起始地址*-主程序-MainInit: NOP LDA #$00 ;定义C口之前复位PTC STA PTC LDA #%00011111 ;定义C口4-0为输出 STA DDRC ;C口接指示灯 STA PTC ;初始时指示灯熄灭 BCLR 4,PTC ;PTC4为0,指示灯7点亮 ;表示进入开始状态,64,;-A口接键盘,查询等待按键- LDA #$00 ;定义A口前复位PTA STA PTA LDA #%00001111 STA DDRA LDA #%11110000 STA PTAPUE,65,MainIni1: JSR KBA ;取得键值在A中 STA KBVALUE ;键值放在KBVALUE中 ;作为KBdef的入口 JSR KBdef ;具体值在A中 cmp #$46 ;ASCII(“F”)是否为$46 BNE MainIni1 ;不是等待“F”键;-设置键盘中断-JSR KBInit ;已按“F”键,进入运行状态, ;执行键盘中断初始化子程序 BCLR 1,INTKBSCR ;开放键盘中断 CLI,66,;-开始总循环处理键盘-Start: NOP;-使灯闪烁- BCLR 4,PTC ;PTA4=0,电亮指示灯7 LDA #$08 JSR Delaysub BSET 4,PTC ;PTA4=1,熄灭指示灯7 LDA #$08 JSR Delaysub,67,JSR Kbde ;执行键盘转化为具体值子程序, ;转成键定义值 CMP #$39 ;测试是否是0-9 BHI Start1 ;大于ASCII(“9”)到Start1 SUB #$30 ;数字实际值=ASCII值-$30 STA PTC ;送PTC口,由指示灯3-0显示 BRA StartStart1: LDA #$FF ;大于ASCII(“9”),消灭指示灯 STA PTC JMP Start ;继续循环处理,68,*-键盘中断初始化子程序(从KBInit开始)-*功能:对被定义为键盘中断的引脚初始化,但未开放键盘中断*占用CPU内寄存器:A*-KBInit: LDA #$00 ;定义A口之前复位PTA STA PTA LDA #%00001111 ;定义A口7-4输入作为列, ;3-0输出作为行 STA DDRA LDA #%11110000 ;定义A口7-4有上拉电阻 STA PTAPUE BSET 1,INTKBSCR ;屏蔽键盘中断 LDA #%11110000 ;允许KBIE7-4PIN中断进入 STA INTKBIER BSET 2,INTKBSCR ;清除键盘中断 RTS,69,*-扫描读键值子程序(从KBA开始)-*功能:扫描一次接在PTA口的4*4键盘(PTA7-4接4根键盘*(X4-1),PTA3-0接4根键盘行线(Y4-1)上的按键(使*用行扫描法),键值放在A中,若无按键,A中值$FF*占用内存:TMPVAR1(缓冲使用)*出口:A=键值*-KBA: MOV #%11111110,TMPVAR1 ;第一根行线为0 LDX #$04 ;扫描4根行线KB1: LDA PTA ;取PTA给A ORA #%00001111 ;PTA7-4保留原态,PTA3-0为1 AND TMPVAR1 ;令PTAn=0,n=0,1,2,3 STA PTA ;处理后给PTA以便查询,70,NOP NOP LDA PTA ;查第n列上是否有键按下 AND #%11110000 ;保留PTA7-4列值,令低PTA3-0=0 CBEQA #$F0,KB2 ;A等于$F0,本行线没键按下 ;A不等于$F0,本行有键按下 LDA PTA ;A放键值 BRA KB3 ;转到KB3结束中断KB2: SEC ;令C=1 ROL TMPVAR1 ;使下一个行线为0,查下一行 DBNZX KB1 ;对行线循环 LDA #$FF ;没有键被按下为$FFKB3:RTS,71,*-键盘中断子程序(从KBint开始)-*功能:键盘中断程序,键值放入内存KBVALUE中*调用子程序:扫描法读键值子程序(KBA),* 键盘中断初始化子程序(KBInit)*出口:第0页内存单元KBVALUE中为键值*-Bint: PSHH ;保护H SEI BSET 1,INTKBSCR ;禁止键盘中断;-以下为中断程序任务- JSR KBA ;调子程序KBA,键值放在A中 STA KBVALUE ;放入内存KBVALUE;-以上为中断程序任务-,72,PULH ;H出栈 JSR KBInit ;调用键盘中断初始化子程序 BCLR 1,INTKBSCR ;开放键盘中断 CLI RTI*-键盘转化为具体值子程序(从KBdef开始)-*功能:键值转为键盘表面具体的字符或符号代表值*入口:内存第0页中KBVALUE为键值,使用键值编号表*占用CPU寄存器:X(存放相对地址)*出口:A=键定义值*-KBdef: LDHX #$0000,73,KBkey1: LDA KBTABLE,X BEQ KBkey3 ;=0,表示表中未定义此键值 CMP KBVALUE ;与KBVALUE入口键值相比较 BNE KBkey2 ;不等,未找到转KBkey2 INCX ;找到地址加1 LDA KBTABLE,X ;取键定义值给A BRA KBkeyrKBkey2: INCX INCX BRA KBkey1,74,KBkey3: LDA #$FF ;未定义键用FF标志KBkeyr: RTSKBTABLE FCB $EE,1,$DE,2,$BE,3,$7E,4 FCB $ED,5,$DD,6,$BD,7,$7D,8 FCB $EB,9,$DB,0,$BB,A,$7B,B FCB $E7,C,$D7,D,$B7,E,$77,F FCB $00*,75,*-程序延时程序子程序(Delaysub)-*功能:程序方法延时,延时长短由入口A中的数值决定*入口:A=延时长度*占用内存:无*占用寄存器:A*-Delaysub: PSHH PSHX Delay1: LDHX #$5588,76,Delay2: NOP AIX #-1 CPHX #$0000 BNE Delay2 DBNZA Delay1 PULX PULH RTS*-中断矢量- ORG $FFE0 ;键盘中断矢量 DW KBint ORG $FFFE ;复位矢量 DW MainInit,77,液晶显示实验,实验目的实验器材硬件接线VB界面,软件功能程序清单备注说明,78,实验目的:,不使用单片机串行外设接(SPI)进行点阵字符型液晶显示(LCD)编程,79,实验器材:,1. SD-1型在线编程实验仪2. LCD(HD44780)3. 导线若干,80,硬件接线:,81,VB界面:,82,程序功能:,开始运行时,LCD显示“Wait Receiving.”等待接收字符,当收到16个字符时,显示之,重复此功能,83,程序清单:,程序说明口地址定义SCI串行通信口地址变量定义主程序系统初始化,串行口初始化LCD初始化子程序LCD命令执行子程序LCD显示子程序中断矢量,84,*-程序说明-*文件名:LCD.ASM*硬件连接:1.LCD的DB0-7与单片机的PORTA的PTA0-7连接作为* 输出* 2.LCD的RS,R/W,E与单片机的PTC0,PTC1,PTC2连接*程序描述:1.开始运行时,LCD显示“Wait Receiving.”* 2.等待接收字符,当收到16个字符时显示之,重复* 此功能*实验目的:不使用单片机串行外设接口(SPI)进行点阵字符* 型液晶显示(LCD)编程*-*,85,*-口地址定义-PTA EQU $0000 ;A口数据寄存器DDRA EQU $0004 ;A口数据方向寄存器PTC EQU $0002 ;C口数据寄存器DDRC EQU $0006 ;C口数据方向寄存器LCD-RS EQU 0 ;LCD寄存器选择信号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司教师节员工活动方案
- 公司组织健身活动方案
- 公司生活会活动方案
- 2025年英语四级考试试题及答案
- 2025年中小学教育改革与进展试题及答案
- 2025年文化历史研究生入学考试试题及答案
- 2025年文物保护工程师资格考试试卷及答案
- 2025年数字经济时代的人才培养与发展试题及答案
- 2025年外语听说能力与实践考试题及答案
- 2025年人才招聘与选拔能力测试卷及答案
- 管道施工安全培训
- 具有形状记忆功能高分子材料的研究进展
- 2023国机集团财务资产纪检监察中心公开招聘2人历年高频难易度、易错点模拟试题(共500题)附带答案详解
- PCBA元件焊点强度推力测试标准
- 食用菌的保鲜技术研究进展
- 可持续建筑(绿色建筑)外文翻译文献
- 2023年春国家开放大学工具书与文献检索形考任务1-4及答案
- 2023年03月北京海淀区卫生健康委所属事业单位招聘430人(第一次)笔试参考题库含答案解析
- ISTA-3A(中文版)运输-试验标准
- 小学科学-蚕变了新摸样教学课件设计
- 企业资产评估工作底稿模版
评论
0/150
提交评论