不可以。
c语言程序是不可以直接下载到单片机中的,c语言的程序需要通过编译程序处理生成单片机能执行的程序并下载到单片机才能被正确执行。
C语言程序是一种计算机编程,用于软件应用程序编程,通过不同的排列组合可以进行多种方式进行程序的设计。
单片机C语言程序设计入门课程,说起来容易,说起来难。学习单片机C语言,首先要了解这两个东西是什么。单片机入门编程主要是学习C语言,其次是电路和编程语言。单片机C语言程序设计学习中必读的模拟电、数字电、电路三本书,为接下来的学习做铺垫。看书的目的是因为网上教程太多,容易出现偏差。其实只要能懂电路原理,就能开发单片机软件。简介单片机又称单片微控制器,不是执行某种逻辑功能的芯片,而是将一个计算机系统集成到一个芯片中。相当于一台微型计算机,与计算机相比,单片机只是缺少I/O设备。综上所述,芯片变成了电脑。它体积小、重量轻、价格低,为研究、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理和结构的最佳选择。单片机已经广泛应用于智能仪器、实时工业控制、通讯设备、导航系统、家用电器等领域。自20世纪90年代以来,单片机技术得到了发展。随着时代的进步和科技的发展,这项技术的实际应用也越来越成熟,单片机被广泛应用于各个领域。如今,人们越来越重视单片机在智能电子技术中的发展和应用,单片机的发展进入了一个新的时期。无论是自动测量的实践,还是智能仪器的实践,都可以看到单片机技术的身影。在当前的产业发展过程中,电子产业是一个新兴的产业。在工业生产中,人们已经成功地应用了电子信息技术,将电子信息技术与单片机技术相结合,有效地提高了单片机的应用效果。作为计算机技术的一个分支,单片机技术在电子产品领域的应用丰富了电子产品的功能,为智能电子设备的开发和应用提供了新的途径,实现了智能电子设备的创新和发展。以上内容参考:百度百科-单片机
你应该先学习C语言。你可以读谭浩强和单片机的书,循序渐进。别担心。基础好,什么都能说。
如果你没学过微机原理,建议你先学完再买本上海马超的书,一周就能看懂了~
不认同无意义的光。《C编程》确实创造了一时的辉煌,这种辉煌很可能会延续下去,但不代表就是最好的。这本书之所以流行,是因为当时没有办法学习C,这本书很好理解。但是现在这本书太落后了,甚至3版还在用老标准,现在大家普遍用C99标准。老标准不能用Dev C编译而且好像提问者应该知道C的基础,推荐《单片机C语言编程及实例》这本书。直接搜索就能找到PDF版本的下载。-马克·提埃洛
看谭浩强老师的。清华大学出版的《饥饿》。
#include <stdioh>
#include <stringh>
int main(void){
int a=24501;
int b=0x0100;
int c=0x0001;
char high[9]={};
char low[9]={};
int i;
for(i=7;i>=0;i--){
if(a&b){
high[i]='1';
}else{
high[i]='0';
}
b=b<<1;
}
for(i=7;i>=0;i--){
if(a&c){
low[i]='1';
}else{
low[i]='0';
}
c=c<<1;
}
printf("high:%s\n",high);
printf("low:%s\n",low);
}
输出结果:
high:01011111
low:10110101
有问题请追问
#include <AT89X51h> //包含头文件
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义数码管位选码
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//定义数码管段选码
unsigned char dispbuf[8]={0,0,0,0,0,0,10,10}; //显示码数组,因为只用了六个数码管,所以将最后两位赋值为10对应与段码0x00,表示不亮
unsigned char temp[8]; //暂存数组
unsigned char dispcount; //扫描位的记录
unsigned char T0count; //计数次数
unsigned char timecount; //定时器5ms中断的次数
bit flag; //定义标志位
unsigned long x; //定义变量用来存放频率值
void main(void)
{
unsigned char i;
TMOD=0x15; //定义定时器0为计数方式,定时器1为记时方式,均工作在方式1
TH0=0; //定时器0初值高8位为0
TL0=0; //定时器0初值低8位为0
TH1=(65536-5000)/256; //定时器1初值高8位
TL1=(65536-5000)%256; //定时器1初值低8位,即定时5ms
TR1=1;//启动定时器1
TR0=1;//启动定时器0
ET0=1;//开定时器0中断
ET1=1;//开定时器1中断
EA=1; //开总中断
while(1)
{
if(flag==1) //如果定时时间到了1s
{
flag=0; //标志位清零
x=T0count65536+TH0256+TL0; //获得整型的频率值,T0count计数器在1s内溢出的次数,每溢出一次就计数了T0count65536次,再加上当前计数寄存器的值即为实际计数总数
for(i=0;i<8;i++)
{
temp[i]=0; //暂存缓冲区清零
}
i=0;
while(x/10) //将频率值的每一位分离出来,存进temp数组,例如63239分离为6、3、2、3、9
{
temp[i]=x%10;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i]; //将暂存数组的数据赋给显示数组
}
timecount=0; //记时清零
T0count=0; //计数清零
TH0=0; //定时器0初值清零
TL0=0; //定时器0初值清零
TR0=1; //重新启动定时器0,其实是作为计数器来用
}
}
}
void t0(void) interrupt 1 using 0 //每个计数中断一次
{
T0count++; //计数加一
}
void t1(void) interrupt 3 using 0 //5ms产生一次中断
{
TH1=(65536-5000)/256; //
TL1=(65536-5000)%256; //重装初值
timecount++;
if(timecount==200) //当timecount=200时,即为1s
{
TR0=0; //关闭定时器0,为了读出定时器0计数个数
timecount=0; //timecount清零,重新计时
flag=1; //置标志位通知主程序1s已到
}
/以下为数码管扫描部分/
//因为放在该中断程序中,故每5ms扫描一位数码管
P2=0xff; //先关闭所有数码管
P0=dispcode[dispbuf[dispcount]]; //先确定相应数码管的段码,送入段码
P2=dispbit[dispcount]; //送入位码
dispcount++; //下一次应该扫描下一位数码管所以要加一
if(dispcount==8) //因为共有8个数码管
{
dispcount=0; //扫描完第7个,回头扫描第0个
}
}
windows下首选VS,版本至少vs2005以上,或者用最新的VSCode,不过需要自己配插件,好处是免费,如果做单片机c开发首选eclipse,linux下如果做单片机首选eclipse,其次是clion。eclipse兼容性最好,不过稳定性差一些,vs在win下没有对手,clion用cmake,相比来说大部分c程序用的都是makefile,需要适应一下。
Devc++:这个IDE是windows环境下的, *** 作简单,功能也不弱,适合新手使用。
Codeblocks(强力推荐):功能比较强大的c/c++IDE,有着不错的智能提示。
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、TurboC等。
编译器
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows *** 作系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
VisualC++::clexe,MicrosoftVC++自带的编译器
集成开发环境
CodeBlocks,开源免费的C/C++IDE
CodeLite,开源、跨平台的C/C++集成开发环境
OrwellDev-C++,可移植的C/C++IDE
C-Free
LightTable
VisualStudio系列
HelloWorld
首先你选的单片机类型要有C语言的相关支持,如MSP430系列,51系列,凌阳SPC系列,等等有的公司是部分芯片有支持,不一定全有具体的支持就是有C语言的编译系统尽管单片机C语言的指令会有一点扩展,但相关的说明每家公司都会有资料,最好是看对口的
第二个要解决的是单机的硬件资源因为单片机不同于PC,当把C程序移值到单片机或在单片机间移值时,由于硬件差别很大,要改的很多比如定时器,在VC中可能只要调用一个函数就可以启动,但在单片机中,要进行很多寄存器设置而不同的单片机设置方法又不同
如果你只是想学一下单片机的,而不是已经确定项目要做,那么,MSP430系列将是首选这是因为,它的仿真器非常简单,自己用74HC244加上几个电阻就可以做好,对C的支持也很好,网上资料也很丰富
/
//p10波形为:
//1、10ms为周期的方波或持续的高、低电平(与flag、p10初始值有关),持续2秒。
//2、持续的高、低电平或10ms为周期的方波(与flag、p10初始值有关),持续2秒。
//3、重复1、2步骤。
/
#include
unsigned
int
t02s;
unsigned
char
t05ms;
bit
flag;
void
main(void)
{
tmod=0x01;
//初始化定时器。
//可以对照单片机pdf相应章节,按位对比。
//此处设置定时器0工作于“16
位定时器/
计数器,tl0、th0
全用”模式。
th0=(65536-500)/256;
//初始化定时/计数器高字节。
tl0=(65536-500)%256;
//初始化。。。。。。低字节。
tr0=1;
//启动定时器0。
//以下两句开启定时器中断,缺一不可。
et0=1;
//允许定时器0中断。
ea=1;
//开启全局中断。
while(1);
//循环,整个程序交由定时中断控制。
}
//此处为定时器中断子程序,每次定时器溢出,进入此段程序。
//根据参数定义,每5ms中断一次。
//定时器中断后,计数不停止,但是需要重新初始化定时/计数器。
void
t0(void)
interrupt
1
using
0
{
//重新“初始化定时/计数器”高、低字节。
th0=(65536-500)/256;
tl0=(65536-500)%256;
//每次中断,t02s
加
1。
t02s++;
//增加400次后(5ms
×
400
=
2s),flag标志取反。
if(t02s==400)
{
t02s=0;
flag=~flag;
}
//若中断时flag标志为0,p10口取反。
if(flag==0)
{
p1_0=~p1_0;
}
}
一般是C语言或者汇编语言。
1、大多数情况下,单片机运行的程序,都是C语言编写的。不过并不是纯粹的传统C语言,而是变种后的C51语言。
单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件 *** 作能力。对于具有C语言编程基础的工程师,能够轻松地掌握单片机C51语言的程序设计。
2、汇编语言:
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的 *** 作码,用地址符号(Symbol)或标号(Label)代替指令或 *** 作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件 *** 作和高要求的程序优化的场合。驱动程序、嵌入式 *** 作系统和实时运行程序都需要汇编语言。
在一些情况下,C51并不能完美的实现功能,所以汇编语言是对C51的一个重要补充。一般来说,启动部分(基础硬件的初始化),往往是由汇编语言完成的。除此以外,一些要求时效性特别强,效率要求特别高时,也需要使用汇编语言完成。
以上就是关于c语言程序可以直接下载到单片机中全部的内容,包括:c语言程序可以直接下载到单片机中、单片机c语言编程、单片机 c语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)