51tracer单片机仿真器之最简单的八路跑马灯源程序
51tracer仿真器完美支持最新版本 keil uv3
51 TRACER仿真器是目前同行业功能完整,稳定,技术先进的仿真器。
兼容KEILC51 UV2 调试环境支持单步、断点、随时可查看寄存器、变量、IO、内存内容。支持夭折功能,全速运行时按STOP按钮即暂停,并指向当前程序行。可仿真各种51指令兼容单片机,ATMEL、WINBOND、INTEL、SST、ST等等。可仿真ALE禁止,可仿真PCA,可仿真双DPTR,可仿真硬件SPI。
真实仿真(32个IO、串口、T2可完全单步仿真),包括任意使用P30和P31口。
单USB接口,无需外接电源和串口,即插即用,台式电脑、无串口的笔记本均适用。三CPU设计,采用仿真芯片+监控芯片+USB芯片结构 。
下载仿真通讯急速115200BPS,也是KEIL支持的最高速度,相比以前版本提高一个数量级(10倍以上),单步运行如飞。如果您以前用过SST单芯片仿真方案,用51TEACER将有 开奔驰的感觉。
内置晶体功能,可以选择最常用的4,11.0592,12,24MHZ晶体。解决晶体引线过长导致的不稳定。
独创多声响和LED指示实时系统状态和自检,特别设计P1.0自检灯,方便排除故障。
独创长按复位键自动进入脱机运行模式,这时仿真机就相当于目标板上烧好的一个芯片,可以更加真实的运行,这种情况下实际上就变了一个下载器,而且下次上电时仍然可以运行上次下载的程序。
主要功能和特性:
可仿真单片机品种: 8xC51/52/54/58及其兼容型单片机
内部仿真时钟: 4mhz,11.0592mhz,12mhz,24mhz
内部仿真程序存储器:63K
断点类型:程序地址/步进/步越/返回
目标系统硬件功能: 支持目标复位功能和目标中断功能
软件特点: 支持多种汇编语言和C语言(包括Keil C 7.0) 支持Keil的IDE集成开发环境,支持软件仿真功能 支持多重嵌套变量和数据结构
提供各种标准的Debug功能
1. 真实仿真P0,P1,P2,P3口,P3.0,P3.1串口,定时器2
2.支持89C52等嵌入式CPU仿真,可以仿真标准的89C51,89C52,89C58等51内核的单片机
3.ISP 在线编程,在线下载,63K程序空间
4.仿真频率涵盖4mhz,11.0592mhz,12mhz,24mhz
5.支持同时最多20个断点
6.支持单步,断点,全速运行,包括以下方式
地址断点
在执行程序中,当遇到用户设置的地址断点时则停止。在文本窗中最左侧的操作列中可执行行的位置点击,可以设置或取消地址断点。程序正确通过编译后, 可执行行与非执行行可以简单地从该行操作列的背景色区分出来:可执行行操作列的背景色是浅蓝色的,而非执行行操作列的背景色是浅灰色的。
步进断点
执行一行程序后停止。在执行中如果遇到调用函数/子程序,则停在函数/子程序的入口。
步越断点
执行一行程序后停止。在执行中遇到调用函数/子程序时不做停留。
返回断点
这是一种特殊功能的断点,使用时必须特别注意使用条件,用户只能在被调用的函数/子程序中使用这种断点。
7.支持汇编,C语言,混合调试
8.内置晶体,解决用户电缆较长带来的干扰问题
9.速度运行如飞,让您的工作充满乐趣。
10.完全兼容keilC51 UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作,兼容keil 7.0以上中文,英文,uv3等版本。即便使用英文版本keil也完全无问题!实验1: 最简单的八路跑马灯
本例实验主要用到了延时子程序,clr,lcall,ajmp 指令, 通过轮流点亮p1.0 …..P1.7 实现效果。用户可以通过此程序的学习, 初步掌握单片机的IO端口操作。
练习1: 怎样把延时的时间改为更短, 或者更长?
练习2: 怎样用P0,P2,P3端口来操作?
练习3: 怎样实现不同的跑马花样?
程序运行照片:
接线方法: 用一条8PIN的数据排线把CPU部份的P1口(JP44)连接到八路指示灯部份的JP32
接线图以及运行瞬间的照片(可以看到8路指示灯轮流点亮)
汇编语言参考程序:
org 0000h ;开始
ajmp loop
org 0080h ;到0030h处避开00-30的敏感地址
loop:
mov p1,#0ffh ;关闭所有灯
clr p1.0 ;点亮灯p1.0
lcall delay ;延时一段时间?
clr p1.1 ;点亮灯p1.1
lcall delay
clr p1.2 ;点亮灯p1.2
lcall delay
clr p1.3 ;点亮灯p1.3
lcall delay
clr p1.4 ;点亮灯p1.4
lcall delay
clr p1.5 ;点亮灯p1.5
lcall delay
clr p1.6 ;点亮灯p1.6
lcall delay
clr p1.7 ;点亮灯p1.7
lcall delay
AJMP LOOP ;到最开始loop处重新运行
delay: mov r5,#20 ;延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
c语言参考程序:
#include<reg51.h> //头文件
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define LED P1 //宏定义,将P1口定义为LED
uchar led_value[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //定义一数组,内存放跑马灯数据
uchar *p=led_value; //定义指针,指向跑马灯数组首地址
void delay() //延迟函数,与跑马灯跳动频率有关
{
uchar ii,jj;
for(ii=0;ii<200;ii++)
for(jj=0;jj<200;jj++);
}
void run_led() //跑马灯运行函数
{
while(*p!=0x00)
{
LED=*p; //将数组中数据取出赋给P1口
p++; //预取下一数据
delay(); //延迟
}
p=led_value;
}
char code SST516[3] _at_ 0x003b; //仿真器保留
main() //主函数
{
while(1)
run_led(); //上电即运行跑马灯程序
}
零成本学习之单片机开发之(3)跑马灯原来可以这么玩
从今天开始给大家逐步讲解单片机编程,有兴趣的小伙伴们,可以关注本课程,完全免费。
本人从事从2004年大学毕业开始从事开发工作,先后做过单片机开发、ucOSII开发、手机开发、android APP开发、PHP开发、微信小程序开发,目前从事物联网开发。我本人并非学计算机的,除了学校上课之外,基本上这些开发都是自学的。边学习边工作,基本上以学以致用为目的,用到什么学习什么。
深深体会到自学的艰辛,尤其是最初入门的时候,那道砍迈过去后面再学习基本上就简单多了,所谓触类旁通,举一反三。但是前面打基础的时候是非常费力的,看到很多评论说C语言指针太难了,后来就放弃了。其实那是没有找到好的学习方法,没有人指导。只要有人带一带指点一下,问题很快就能解决。
相比于国外的开源学习氛围,我认为我们做的还远远不够,我们的编程大师还非常少,像ucLinux、ucOSII、FreeRtos等等非常有名的嵌入式操作系统,商业的更不用说了,太多了。我们在软件方面一直都是落后的状态,当然近几年我们自己也有不少好的作品。比如,Huawei LiteOS、Alios Things、djyos、RT-Thread、SylixOS等。一直想为学习单片机的同学做点什么,今年相对来说会轻松一些,利用闲暇时间,给大家分享一些案例、学习方法和心得。本课系列课程主要针对初学者、单片机学习爱好者、学习中遇到困难者,有什么不清楚的地方可以留言讨论。
首先、课程目标
使用一个按键和8个LED指示灯实现跑马灯效果,总共4中显示效果使用按键按下事件切换显示模式第二、原理图设计
添加8个LED指示灯,也可以利用上节课的原理图直接用右键复制出7个LED元器件添加8个限流电阻,并调整布线,直接上结果。第三、编码设计
软硬件接口
端口P0 第一个管脚P00z作为按键输入端口端口P2作为LED的输出端口软件流程
1.串口初始化
2.主循环处入口
检测按键事件 根据按键事件切换显示模式 根据模式更新显示数据 根据显示模式显示显示数据3.考虑到排版整洁性,只上了主函数代码,其他模块代码见源代码文件
void main(void)
{
initUart();//串口初始化
while(1)//主循环
{
handleKey();//检测按键
checkMode();//根据按键事件切换显示模式
handleMode();//根据显示模式更新显示数据
if(ledmode%2==0)//根据显示模式把数据显示到LED上
displayDriver1(cnt);
else
displayDriver2(cnt);
delay(100); //延时100ms
}
}
最后、知识点总结
1.跑马灯也是IO操作的进一步巩固,只不过加入了时序上的小算法,看起来更具有动态感
2.注意如何通过按键事件切换模式的
3.注意如何模式和更新的数据进行换算的
4.注意显示驱动的技巧
5.本次课程所用的工程文件私信20002,系统自动给出下载链接。
本次课程到此结束,如果有什么疑问欢迎留言。
相关问答
单片机 编程 跑马灯 怎么停下来继续跑?单片机编程跑马灯可以通过添加一个开关或者延时函数来实现停下来继续跑的功能。当开关被按下时,可以通过改变程序中的循环条件或者控制变量来暂停跑马灯的循环...
单片机 中的流水灯,花样灯, 跑马灯 ?没什么实质的区别只是各人说法不一样,像流水灯程序也有人叫跑马灯,说个简单的例子,比方说一个亮点不断的左循环就叫流水灯。从中间亮两个点,从左右两边流动就...
软件能脱离操作系统独立存在吗?先亮答案:能基础知识回答这个问题,得理清几个概念。硬件(Hardware)、固件(Firmware)、驱动程序(Driver)、操作系统(OpeartingSystem)、应用软件(Applic...
led 跑马灯 怎么安装?要让跑马灯显示实时行情,需要把软件的行情信号源接入跑马灯。一般这个信号源的接入都是用软实现的。如果你配了跑马灯的话,安装的人员会教你怎么把信号源接入...
如何做才能精通 单片机 ?1、熟悉单片机的原理,结构;2、学好数电,模电,为设计电路打好基础;3、熟练使用C语言,多学习别人的程序;4、对操作系统原理有一定的了解;5...学习单片机很...
vtv 跑马灯 闪烁是怎么回事?1、电视电源灯一直闪烁可能是因为电源线似断非断、插座内部接触不良。解决办法:检查电源线是完好,或者更换一个新的排插。2、电视电源灯一直闪烁可能是因为CP...
请问小白学 单片机 的具体方向和步骤该如何呢?我是从大学开始学习单片机的,现在分享一下我的学习感受。单片机学习分为硬件部分和软件部分,硬件那部分需要电路,模电数电等作为基础,软件部分只需要有一点...3...
三星 跑马灯 不跑了?可能原因1:切换两个灯之间的时间间隔太短;可能原因2:程序是个单次系统,没有循环语句;可能原因3:就是LZ编程输出,全部亮的。另外可以查看硬件系统是...
mega128 单片机 ,编写定时器中断 程序 里switch函数什么意思,怎么用的啊?应该是PORTA的低4位,循环输出0比如num=2时,PORTA=PORTA&FE,第1个I/O口(PA0)将输出0,其他口保留原状num=3时,PORTA的第2个I/O口(PA1)将输...
家里很多灯不亮了,只有一两个灯亮。急?怀疑是某个元件...这种流水灯是通过三极管先后点亮的,看这个灯灭的情形应该是有一个三极管的电路出了问题,用个万用表的短路测试去测一下各元件的焊接情况,怀...