龙空技术网

51tracer单片机仿真器之最简单的八路跑马灯源程序

音乐路上小童鞋 114

前言:

如今小伙伴们对“单片机歌曲编程”可能比较关心,我们都需要知道一些“单片机歌曲编程”的相关文章。那么小编也在网络上汇集了一些有关“单片机歌曲编程””的相关资讯,希望大家能喜欢,我们快快来了解一下吧!

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(); //上电即运行跑马灯程序

}

标签: #单片机歌曲编程