Keil实例教程(五)Keil仿真板的使用.pdf

上传人:wj 文档编号:14652594 上传时间:2023-06-25 格式:PDF 页数:6 大小:48.89KB
下载 相关 举报
Keil实例教程(五)Keil仿真板的使用.pdf_第1页
第1页 / 共6页
Keil实例教程(五)Keil仿真板的使用.pdf_第2页
第2页 / 共6页
Keil实例教程(五)Keil仿真板的使用.pdf_第3页
第3页 / 共6页
Keil实例教程(五)Keil仿真板的使用.pdf_第4页
第4页 / 共6页
Keil实例教程(五)Keil仿真板的使用.pdf_第5页
第5页 / 共6页
Keil实例教程(五)Keil仿真板的使用.pdf_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Keil实例教程(五)Keil仿真板的使用.pdf

《Keil实例教程(五)Keil仿真板的使用.pdf》由会员分享,可在线阅读,更多相关《Keil实例教程(五)Keil仿真板的使用.pdf(6页珍藏版)》请在冰点文库上搜索。

Keil实例教程(五)Keil仿真板的使用.pdf

Keil软件实全教程(五)其于其于Keil的实验仿真板的使用的实验仿真板的使用前面介绍了Keil软件的使用,从中我们可以看到Keil的强大功能,不过,对于初学者来说,还有些不直观,调试过程中看到的是一些数值,并没有看到这些数值所引起的外围电路的变化,例如数码管点亮、发光管发光等。

为了让初学者更好地入门,笔者利用Keil提供的AGSI接口开发了两块仿真实验板。

这两块仿真板将枯燥无味的数字用形象的图形表达出来,可以使初学者在没有硬件时就能感受到真实的学习环境,降低单片机的入门门槛。

图1是键盘、LED显示实验仿真板的图,从图中可以看出,该板比较简单,有在P1口接有8个发光二极管,在P3口接有4个按钮,图的右边给出了原理图。

图2是另一个较为复杂的实验仿真板。

在该板上有8个数码管,16个按键(接成44的矩阵式),另外还有P1口接的8个发光管,两个外部中断按钮,一个带有计数器的脉冲发生器等资源,显然,这块板可以完成更多的实验。

一、实验仿真板的安装一、实验仿真板的安装这两块仿真实验板实际上是两个dll文件,名称分别是ledkey.dll和simboard.dll,安装时只要根据需要将这两个或某一个文件拷贝到keil软件的c51bin文件夹中即可。

二、实验仿真板的使用二、实验仿真板的使用要使用仿真板,必须对工程进行设置,设置的方法是点击Project-OptionforTargetTarget1打开对话框,然后选中Debug标签页,在Dialog:

Parameter:

后的编缉框中输入-d文件名。

例如要用ledkey.dll(即第一块仿真板)进行调试,就输入-dledkey,如图3所示,输入完毕后点击确定退出。

编译、连接完成后按CTRL+F5进入调试,此时,点击菜单Peripherals,即会多出一项“键盘LED仿真板(K)”,选中该项,即会出现如图1的界面,键盘、LED显示实验仿真板图2单片机实验仿真板Keil软件实全教程(五)同样,在设置时如果输入-dsimboard则能够调出如图2的界面。

第一块仿真板的硬件电路很简单,电路图已在板上,第二块板实现的功能稍复杂,其键盘和数码显示管部份的电路原理图如图4所示。

下表给出了常用字形码,读者也可以根据图中的接线自行写出其它如A、B、C、D、E、F等的字形码。

除了键盘和数码管以外,P1口同样也接有8个发光二极管,连接方式与图1相同;脉冲发生器是接入T0即P3.4引脚。

0c0h0f9h0a4h0b0h99h92h82h0f8h80h90h0FFH0123456789消隐三、实例调试三、实例调试以下以一个稍复杂的程序为例,说明键盘、LED显示实验仿真板的使用。

该程序实现的是可控流水灯,接P3.2的键为开始键,按此键则灯开始流动(由上而下),接P3.3的键为停止键,按此键则停止流动,所有灯暗,接P3.4的键为向上键,按此键则灯由上向下流动,接P3.5的键为向下键,按此键则灯由下向上流动。

例8:

UpDownBIT00H;上下行标志StartEndBIT01H;起动及停止标志LAMPCODEEQU21H;存放流动的数据代码ORG0000HAJMPMAINORG30HMAIN:

MOVSP,#5FHMOVP1,#0FFHCLRUpDown;启动时处于向上的状态hgfeP0.7P0.0P0.5P0.4P0.7P0.6abcdP0.3P0.2P0.0P0.1P2.7P2.0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0驱动P3.0P3.1P3.2P3.5P3.3P3.4P3.6P3.73276BAFE105498CDVCC89C51图4实验仿真板2数码管和键盘部份的电路图图3实验仿真板的设置Keil软件实全教程(五)CLRStartEnd;启动时处于停止状态MOVLAMPCODE,#01H;单灯流动的代码LOOP:

ACALLKEY;调用键盘程序JNBF0,LNEXT;如果无键按下,则继续ACALLKEYPROC;否则调用键盘处理程序LNEXT:

ACALLLAMP;调用灯显示程序AJMPLOOP;反复循环,主程序到此结束;延时程序,键盘处理中调用DELAY:

MOVR7,#100D1:

MOVR6,#100DJNZR6,$DJNZR7,D1RETKEYPROC:

MOVA,B;从B寄存器中获取键值JBACC.2,KeyStart;分析键的代码,某位被按下,则该位为1JBACC.3,KeyOverJBACC.4,KeyUpJBACC.5,KeyDownAJMPKEY_RETKeyStart:

SETBStartEnd;第一个键按下后的处理AJMPKEY_RETKeyOver:

CLRStartEnd;第二个键按下后的处理AJMPKEY_RETKeyUp:

SETBUpDown;第三个键按下后的处理AJMPKEY_RETKeyDown:

CLRUpDown;第四个键按下后的处理KEY_RET:

RETKEY:

CLRF0;清F0,表示无键按下。

ORLP3,#00111100B;将P3口的接有键的四位置1MOVA,P3;取P3的值ORLA,#11000011B;将其余4位置1CPLA;取反JZK_RET;如果为0则一定无键按下CALLDELAY;否则延时去键抖ORLP3,#00111100BMOVA,P3ORLA,#11000011BKeil软件实全教程(五)CPLAJZK_RETMOVB,A;确实有键按下,将键值存入B中SETBF0;设置有键按下的标志;以下的代码是可以被注释掉的,如果去掉注释,就具有判断键是否释放的功能,否则没有K_RET:

;ORLP3,#00111100B;此处循环等待键的释放;MOVA,P3;ORLA,#11000011B;CPLA;JZK_RET1;读取的数据取反后为0说明键释放了;AJMPK_RET;K_RET1:

CALLDELAY;消除后沿抖动RETD500MS:

;流水灯的延迟时间MOVR7,#255D51:

MOVR6,#255DJNZR6,$DJNZR7,D51RETLAMP:

JBStartEnd,LampStart;如果StartEnd=1,则启动MOVP1,#0FFHAJMPLAMPRET;否则关闭所有显示,返回LampStart:

JBUpDown,LAMPUP;如果UpDown=1,则向上流动MOVA,LAMPCODERLA;实际就是左移位而已MOVLAMPCODE,AMOVP1,ALCALLD500MSLCALLD500MSAJMPLAMPRETLAMPUP:

MOVA,LAMPCODERRA;向下流动实际就是右移MOVLAMPCODE,AMOVP1,ALCALLD500MSLAMPRET:

RETEND将程序输入并建立工程文件,设置工程文件,在Debug标签页中加入“-dledkey”,汇编、连接文件,按Ctrl+F5开始调试,打开仿真板,使用F5功能键全速运行,可以看到所Keil软件实全教程(五)有灯均不亮,点击最上面的按钮,立即会看到灯流动起来了,点击第二个按键,灯将停止流动,再次点击第一个按钮,使灯流动起来,点击第三个按钮,可以发现灯流动的方向变了,点击第四个按钮,灯的流动方向又变回来了。

如果没有出现所描述的现象,可以使用单步、过程单步等调试手段进行调试,在进行调试时实验仿真板会随时显示出当前的情况,是不是非常的直观和方便呢?

下面的一个例子是关于第二块实验仿真板的,演示点亮8位数码管。

例9:

ORG0000hJMPMAINORG30HMAIN:

MOVSP,#5FHMOVR1,#08HMOVR0,#58H;显示缓冲区首地址MOVA,#2INIT:

MOVR0,A;初始化显示缓冲区INCAINCR0DJNZR1,INIT;将0-7送显示缓冲区LOOP:

CALLDISPLAYJMPLOOP;主程序到此结束DISPLAY:

MOVR0,#7FH;列选择MOVR7,#08H;共有8个字符MOVR1,#58H;显示缓冲区首地址AGAIN:

MOVA,R1MOVDPTR,#DISPTABLEMOVCA,A+DPTRMOVP0,AMOVP2,R0MOVA,R0RRAMOVR0,AINCR1DJNZR7,AGAINRETDISPTABLE:

DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0FFH;字形码表END这一程序内部RAM中58H到5FH被当成是显示缓冲区,主程序中用2-9填充该显示区,然后调用显示程序显示2-9。

这里是用了最简单的逐位显示的方式编写的显示程序。

最后介绍一个小小技巧,将鼠标移入按钮区域,按下左键,按钮显示被按下,不要放开Keil软件实全教程(五)鼠标左键,将光标移出按钮区域,松开左键,可以看到,按钮仍处于按下状态,利用这一功能,在需要I/O口长期处于低电平时,你就不必一直用手按着鼠标的左键啦。

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2