keil如何程序并列

keil如何程序并列,第1张

程序并列是不是同时执行两个程序,如果是的话,可以将两个程序糅合在一起来实现,如:

修改前的程序:

#include<reg51h>

sbit green=P2^0;

sbit blue=P2^1;

sbit red=P2^2;

sbit shan=P1^0;

sbit shan2=P1^1;

void delay(int i)

{

while(--i)

{

;

}

}

void bianse(void)//这个函数程序是控制灯渐亮渐暗

{

int i,j;

for(i=1;i<2000;i=i+100)

{

for(j=0;j<1;j++)

{

green=0;

blue=0;

red=0;

delay(i);

green=1;

blue=1;

red=1;

delay(2000-i);//红,绿,蓝一起上升

}

}

for(i=2000;i>0;i=i-100)

{

for(j=0;j<1;j++)

{

blue=1;

green=1;

red=1;

delay(2001-i);

red=0;

green=0;

blue=0;

delay(i);//红蓝绿下降

}

}

}

void shanshuo(void)//这个函数程序是控制灯闪烁

{

int i,k;

for(k=0;k<10;k++)

{

shan=0;

delay(5000);

shan=1;

delay(4000);

}

for(i=0;i<10;i++)

{

shan2=0;

delay(5000);

shan2=1;

delay(4000);

}

}

void main(void)

{

while(1)

{

bianse();

green=1;

blue=1;

red=1;

shanshuo();

}

}

按照以上程序运行起来的时候是先把P2口的灯先渐亮渐暗完后才轮到P1口的灯闪烁,但想改变一下方式,就是P2口的灯渐亮渐暗的同时,P1口的灯都在闪烁,就是渐亮渐暗跟闪烁的灯都同时显示出来。

修改后:

这个应该是两个功能同时实现,渐亮渐暗是用延时实现的PWM,而灯的闪烁其实就是单片机的输出为矩形波,两个功能同时实现时,就是在矩形波的波峰波谷时期加入了PWM。两个波形的叠加(将两个功能柔和在一起)。在灯渐亮渐暗子程序中,一个for循环for(i=1;i<2000;i=i+100)其实就是一个PWM的周期,是相同的、一定的,那么就可以利用判断是第几个周期来决定该周期是否要闪烁,还是关闭(也就是利用了PWM的周期来确定矩形波的周期)。

这个循环for(j=0;j<1;j++)是不是可以去掉呢。。。。。。。。

修改后的程序:调试过了(灯的端口改为P0了)

#include<reg51h>

sbit green=P0^0;

sbit blue=P0^1;

sbit red=P0^2;

sbit shan=P0^3;

sbit shan2=P0^4;

void delay(int i)

{

while(--i)

{

;

}

}

void bianse1(void)//这个函数程序是控制灯渐亮渐暗

{

int i;

for(i=1;i<2000;i=i+100)

{

if(i%200==0)shan=~shan; /经过200个PWM周期灯的亮灭交替,改变这个参数可以改变灯的闪烁频率/

green=0;

blue=0;

red=0;

delay(i);

green=1;

blue=1;

red=1;

delay(2000-i);//红,绿,蓝一起上升

}

for(i=2000;i>0;i=i-100)

{

if(i%200==0)shan=~shan;

blue=1;

green=1;

red=1;

delay(2001-i);

red=0;

green=0;

blue=0;

delay(i);//红蓝绿下降

}

}

void bianse2(void)//这个函数程序是控制灯渐亮渐暗

{

int i;

for(i=1;i<2000;i=i+100)

{

if(i%200==0)shan2=~shan2;

green=0;

blue=0;

red=0;

delay(i);

green=1;

blue=1;

red=1;

delay(2000-i);//红,绿,蓝一起上升

}

for(i=2000;i>0;i=i-100)

{

if(i%200==0)shan2=~shan2;

blue=1;

green=1;

red=1;

delay(2001-i);

red=0;

green=0;

blue=0;

delay(i);//红蓝绿下降

}

}

void shanshuo(void)//这个函数程序是控制灯闪烁

{

int i,k;

for(k=0;k<10;k++)

{

shan=0;

delay(5000);

shan=1;

delay(4000);

}

for(i=0;i<10;i++)

{

shan2=0;

delay(5000);

shan2=1;

delay(4000);

}

}

void main(void)

{

shan=1;

shan2=1;

while(1)

{

bianse1();

bianse2(); /两个灯的交替闪烁/

green=1;

blue=1;

red=1;

//shanshuo();

}

}

51单片机用的是 keilC51;STM32装keilMDK。\r\n如果先装keilC51,后装keilMDK的,装在不同的目录里,装完之后不管是51工程还是stm32工程默认都会用keilMDK打开,这样打开51工程时会出错\r\n \r\n最简单的方法: 要打开51的工程必须先打开keilC51程序,然后再程序里打开工程文件。\r\n打开stm32工程当然没有问题\r\n \r\n第二个方法: 让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了:\r\n1、安装keilC51,安装目录 C:\keilC51\\r\n2、安装keilMDK,安装目录 C:\keilMDK\\r\n3、把 C:\keilC51\ 里面的 C51 文件夹复制到 C:\keilMDK\ 里\r\n4、把 C:\keilC51\ 里面的 UV4 文件夹复制到 C:\keilMDK\ 里,提示有同名文件都不要覆盖(注意是不要覆盖)\r\n5、把 C:\keilC51\TOOLSINI 文件里面的内容复制到 C:\keilMDK\TOOLSINI 文件后面,并且把所有的 "keilC51”替换为"keilMDK”\r\n这样就可以了

首先我们需要在电脑上安装Keil软件,安装好后双击它的快捷方式打开这个软件!

打开软件后,会出现这个页面,这时候就需要我们点击窗口上面的project,然后点击New uvision project新建一个工程文件,在里面需要我们选择芯片,51单片机我们是选择的Atmel里面的AT89c51,这个是很好找的!

选择好芯片后,我们需要保存文件,接着就是写程序了,我们新建一个空白文档,这个是点File下面那个按钮。

在Text中编写自己的程序,我们需要把51单片机的头文件添加上去,这个是#include<reg51h>,写好之后把它保存再添加到工程里,这里需要我们注意,是点project的source group里面的Add Files to…… 这样才不会出错!

接下来检查程序有无问题,如果没有问题,我们可以编译,链接,调试了,这个需要我们生成Hex文件,这样才能放到protues软件中仿真,也可以不用生成Hex文件,而是生成bin文件下载到开发板中

如果程序在编译过程中出现问题,这就说明我们的程序有问题,我们可以去点它的错误提示找到错误语句的位置,然后再去修改,还有我们需要注意程序编译通过,有时候在单片机上运行也不能实现我们希望的结果,所以在编写的过程中我们要认真!

步骤:

1、首先打开Keil软件,并打开您的工程。

2、然后选择“View”菜单,在下拉菜单中单击“Register”或“Memory”选项,分别打开寄存器窗口和存储器窗口。

3、最后在寄存器窗口中,您可以查看当前CPU中各种寄存器的值,这些寄存器包括通用寄存器、状态寄存器等。这将帮助您了解代码运行过程中寄存器的变化情况。

4、在存储器窗口中,您可以查看内存中特定位置的值。通过在地址栏中输入一个地址,可以查看该地址处存储的数据,包括程序指令、变量值等。这将帮助您调试由于内存读写问题而引起的错误。

5、在调试模式下,您可以在程序执行过程中停止程序运行,并在寄存器和存储器窗口中查看当前寄存器和存储器的值。这样可以帮助您确定代码中存在的问题。

在Keil中进行仿真时正常,但在脱机(即不连接目标硬件)时出现异常,可能有以下几种原因:

1 缺少目标硬件:如果程序需要在特定的硬件上运行,而你在脱机时没有连接该硬件,那么程序就无法正常运行。请确保程序可以在脱机环境下运行,或者连接正确的目标硬件。

2 缺少外设驱动程序:如果你的程序使用了某些外设,例如串口、SPI、I2C等,而在脱机时没有提供相应的驱动程序,那么程序就无法正常运行。请确保您的程序所依赖的外设驱动程序已经正确地添加到了Keil项目中,并且已经编译通过。

3 缺少库文件:如果程序使用了某些库函数,而你在脱机时没有提供相应的库文件,那么程序就无法正常运行。请确保您的程序所依赖的库文件已经正确地添加到了Keil项目中,并且已经编译通过。

4 硬件配置错误:如果程序需要特定的硬件配置才能正常运行,而在脱机时没有正确地配置硬件,那么程序就无法正常运行。请确保硬件配置与程序要求相符,并且已经正确地设置。

如果仍然无法解决问题,建议检查Keil的日志文件,查看是否有相关的错误信息。另外,也可以尝试在Keil的仿真器选项中进行一些调整,例如修改仿真速度、调整仿真器设置等。

以上就是关于keil如何程序并列全部的内容,包括:keil如何程序并列、用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决、keil怎样运行程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10143111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存