当前位置:首页 » 编程语言 » keil与c语言单片机控制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

keil与c语言单片机控制

发布时间: 2022-07-14 14:25:19

㈠ 关于基于c语言的单片机keil编程问题.

KSC: 是标号。
DSP[x]指的是DSP数组中第x个数据的值。

㈡ 求大神在keil上帮写51单片机C语言程序

//第一个实验:
//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2...D18连接P0.7
//假设K1按键在P2.3引脚
#include<reg51.h>
#include<intrins.h>
sbitk1=P2^3;//假设K1按键在P2.3引脚
voidmain()
{
P0=0xfe;
while(1)
{
if(k1==0)
{
while(k1==0);
P0=_crol_(P0,1);
}
}

}

//第二个实验:
//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2...D18连接P0.7
#include<reg51.h>
charled[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};

voidmain()
{
chari=0;
charcounter=0;
TMOD=0x01;//T0工作方式1
TH0=(655356-50000)/256;//延时50ms
TL0=(655356-50000)%256;//延时50ms
TR0=1;//启动T0
while(1)
{
if(TF0==1)//查询
{
TH0=(655356-50000)/256;//重新延时50ms
TL0=(655356-50000)%256;//重新延时50ms
counter++;
if(counter==10)//延时0.5秒
{
counter=0;//重新开始新一轮0.5秒延时
i++;
if(i==16)
{
i=0;
}
P0=led[i];//点灯
}
}
}
}

㈢ keil软件用单片机控制8个LED流水灯来回点亮(C语言程序)

#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //点亮第一个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //点亮第二个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //点亮第三个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //点亮第四个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //点亮第五个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //点亮第六个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //点亮第七个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //点亮第八个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}

或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循环点亮LED
w<<=1; //点亮灯的位置移动,最低位补0
w=w|0x01; //将最低位置1
delay(500); //延时
}
}
}

或:
#include "reg51.h"
//程序中使用_crol_函数,所以要包含头文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延时
temp=_crol_(temp,1); //点亮LED的位置循环左移一位
}
}

㈣ 单片机用keil 编程C语言,控制某I/O口通断--通断的循环,公式怎么编,比如循环通断100次,并编写多种延时

这个程序可以这样实现:
delay(int delaytime){}/*延时程序自己实现,可以用单片机是里面的定时器,也可以让单片机一直计算一个数N次,N次完了之后延时目的达到,函数结束。*/
想要的通断函数可以定义为:void On_Off(void );
void On_Off(void)
{
.................
.................
p1=0;
for(int i=0;i<100;i++)
{
p1=~p1;//位运算,表示取反,在嵌入式中经常使用这种方式,运算度快,而且方便
delay();

}
}

㈤ 怎么用keil写51单片机的c语言程序

建立工程,选取所用单片机具体型号,在引导下建立完成工程 选择c语言编程,建立模板,即可开始,写C语言代码。

㈥ 在51单片机中用c语言keil写程序实现用一个按键控制6个灯的亮和灭(按下按

#include<reg51.h>
sbit key=P1^0;
sfr LED=P0;
main()
{
while(1)
if(key==0)P0=0xc0;
else P0=0xff;
}

㈦ 我初学单片机,看网上有人说keil有人说keilC,这两者有区别吗是不同的...

这是两个不同的概念,Keil是软件,KeilC是语言。Keil是单片机的开发,编译,调试环境,KeilC是开发单片机所用的语言,也就是C语言在单片机中的应用。现在Keil这种开发环境已经有很多版本了,而且有针对不同的硬件版本,比如说Keil
for
C51,Keil
for
arm。

㈧ 用keil软件如何将汇编与C语言结合起来一起编写单片机的程序

在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法。
方法1)在Keil C51的函数中直接插入汇编语句
方法2)按照Keil C51接口规则,编写汇编模块
方法1是利用编译控制命令#pragma asm(用来标识所插入的汇编语句的起始位置) 和 #pragma endasm (用来标识所插入的汇编语句的结束位置) ,这两条命令必须成对出现,并可以多次出现。在Keil C51中不对插入的汇编代码做任何的处理。
方法2编写汇编模块,需对KEIL编译器的编译过程做些了解。Keil编译器的编译过程是首先将项目中的一个个源文件编译为目标代码(obj文件),然在再通过连接器产生为最终可执行的hex文件。
目标代码将其中的代码、数据、常量放在不同的“段”中,保存程序的段称为“代码段”,保存数据的段称为“数据段”,最终目标代码经过Keil的连接器按照“段”的要求转换为程序和数据地址固定的可执行文件。
在Keil软件中,“段”按定位属性分为:“可重定位段”和“绝对段”。
“可重定位段”:程序和数据在其分别所对应的存储单元(FLASH和RAM)中的存储地址是浮动的、可重定义的、相对可变的。
“绝对段”:其地址在连接前就已确定不变,连接器据此为它分配地址。
经Keil编译器生成的“段”具有如下属性:
1)段的存储属性(program code data pdata xdata bdata bit等);
2)段的起始地址;3)段的长度;
4)段的定位要求:绝对段地址固定,可重定位段定位的要求如要求代码段在2K范围内,数据段定位在可位寻址区等;
5)段名:包括程序和数据(变量和常量)的段的存储属性及段所属的程序模块(文件)。代码段: ?PR? funcname?Filename
数据段如:?DT? funcname?Filename; ?BI? funcname?Filename
标准段名前缀列表
段前缀 存储类型 含义
?PR? Program 程序存储区的代码
?CO? code 程序存储区的常量
?BI? Bit 内部数据存储区的可位寻址的位变量
?BA? Bdata 内部数据存储区的可位寻址的字节变量
?DT? Data 内部数据存储区的变量
?ID? Idata 内部数据存储区可间接寻址的变量
?PD? Pdata 外部数据存储区的页变量
?XD? Xdata 外部数据存储区的变量

㈨ keil怎样把C语言转换成单片机汇编语言

1、打开Keil,新建一个51工程,同时新建一个main.c文件,并加入到工程源代码当中。