单片机c语言编程

作者&投稿:住义 (若有异议请与网页底部的电邮联系)
单片机C语言编程~

/*该程序流水灯有两种模式,顺序左移和顺序右移,独立开关控制*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar tmp,flag;
sbit key1=P3^4;
sbit key2=P3^5;
void delay(uint z);
void led();
void keyscan();
void main()
{
tmp=0xfe;
P1=tmp;
while(1)
{
keyscan();
led();
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
flag=1;
while(key1==0);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
flag=0;
while(key2==0);
}
}
}
void led()
{
switch(flag)
{
case 1: {tmp=_crol_(tmp,1);P1=tmp;delay(200);break;}
case 0: {tmp=_cror_(tmp,1);P1=tmp;delay(200);break;}
default: break;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

很多想学单片机的人问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。

先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。

有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。

总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。


步骤:1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)

2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)

3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)

4.自己完全设计具有个人风格的电路,产品,。。。你已经是高手了。 。。。。


看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。
参考资料:

用于 做流水灯
可以让一盏灯 一直从左边移到右边
我们用 当i=1的时候 来分析 temp=0xfe=(1111 1110)
执行 a=temp<<i ;a=1111 1100 ;(因为着不是循环左移)
如果只有这样的话 最右边的那盏等也会亮。就不能达到只开一盏灯的目的
所以 还要 b=temp>>7; b=0000 0001
p1=a|b; P1=1111 1101;
所以 p1就丛 1111 1110 变化成了 1111 1101
这样等就左移了一位。

这是个流水灯程序。
这两句,看来是多余的。

可能它移动的时候,比如左移右边就补0.然后就或上一个b,b正好是右移8-i,那么结果就是整个循环只有一个0在每一个位上移动了。不这样做就一个一个灯亮不会只是一个灯亮了暗再下一个亮了,到最后就是全亮。

循环左移操作,相当于RL指令。
想象不出来的可以看51的累加器循环移位指令。


8031单片机c语言编程
对于8031本身,肯定是汇编实现基本的内核。楼主的说法可能有问题把。应该是对于操作过程的编程。在这一点上和8051的编程基本没有区别,c语言是通用的嵌入式编程语言。

...需从主机发送8个字节的数据给从机。求C语言源程序
1.定义三个gpio: p0-sclk, p1-sdi, p2-sdo;p0用于模拟spi的clock,p1用于接收数据,p2用于f发送数据;硬件上单片机A的p0接单片机B的p0,A的p1接B的p2,A的p2接B的p1 2.发送程序:clock拉低,sdo输出0或1(数据),延时一定时间,clock拉高,延时一定时间,这样A就发送一位数据到B,循环8次...

8051单机片C语言编程
先求演算法. 147258是有规律的, 能看得出来吗?再将演算法套入while中的P1, 就可以了

急求《单片机C语言程序设计实训100例——基于8051+Proteus仿真》第三...
这本书一共5章节,你说第三部分指的哪里?第五章才是综合设计部分啊,而且这部分有好多例程,也不知道你要哪部分?第1章 8051单片机C语言程序设计概述1 1.1 8051单片机引脚1 1.2 数据与程序内存5 1.3 特殊功能寄存器6 1.4 外部中断、定时器\/计数器及串口应用8 1.5 有符号与无符号...

c语言都有哪些内容
而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。所以很多硬件编程,片上编程语言也选用C...

请问8位与32位的单片机在编程上有什么不同,需要注意些什么!
用C语言编程的话,没什么不同 不管是8位的32位的,硬件结构不同,功能也会相差很大,主要区别就 体现在特殊功能寄存器上,用 C语言操作单片机,可以不进行内存管理,但离不开对特殊功能寄存器的操作 即使都是8位单 片机,特殊功能寄存器也相差很大 至于通用的数学运算,利用C语言的库函数,编程时认为...

学习单片机是用汇编语言好呢?还是用c语言好呢?
可以跟踪寄存器的值,因为寄存器都是自己定义的,比较直接,控制硬件也比较直观。C相对容易读写。对于新手,相对来说,C容易上手和理解,在算法上也有自己的函数,而汇编必须自己编写各种函数。所以各有优劣,有时候优点也是缺点。编程主要还是思路,也就是流程,语言只是个工具,用熟了都好用。

老在C语言中听说的单片机是什么?
就可以在软件和晶振下工作了。同时,微控制器具有丰富的输入输出设备,像是模拟数字转换(ADC),定时器,串口或者其他串行通讯接口(比如I2C,串行外围接口(SPI),控制器局域网)。通常,这些继承在内部的设备可以通过特殊的指令来操作。一些现代的微控制器支持一些内建的高级编程语言,比如BASIC语言。

C语言编程“Hello,world”应该怎们弄
2、然后点击上图工具栏中的文件,里面有个新建菜单,然后我们可以设置一下我们的工作空间,如下图所示:3、接下来,再点击工具栏下的文件,里面有个新建菜单,点击它,出现下图的对话框:4、点击确定即可,创建出一个helloworld.c的小程序,然后我们就可以编写我们的Hello World小程序了。此时就需要我们...

...最好用汇编语言,实在不行,C语言也可以。需要大家快速点。
最好用汇编语言,实在不行,C语言也可以。需要大家快速点。 以6个数码管中间4个分别代表东南西北4个...大学的实验课中你至少会用过数字万用表,波形发生器、电源、示波器、小电机、单片机仿真机,至少要把...keil2编程 用了Atmel 89c52 ,锁存器74hc573两片,LED时间长都忘记了,没有硬件,你调试看看吧#include...

肃北蒙古族自治县15532674529: 单片机C语言编程 - 搜狗百科
林卿银杏: 每一种单片机都有一套自己的C编译器,你可以直接用,也可以挂载到其他的编译环境中 比如 Wave6000 等 51系列的 推荐用keilV8 Microchip系列的推荐用HT-PICC 编译环境用MPLAB 然后编程代码部分你写好之后,编译,此时会生成一些文件,如*.hex ,*.bin …… 然后把.hex 文件 利用烧写器烧写到单片机里面 这样单片机就可以按照编译的程序执行了 单片机的种类不一样,程序代码也略有区别

肃北蒙古族自治县15532674529: 现代单片机用C语言怎样编程 -
林卿银杏: 如果是用汇编语言编写程序,使用那些RAM单元,是由编程者自己安排的;那么占用的RAM空间,编程者就可以很容易的计算出来.如果是用C语言编写程序,使用那些RAM单元,编程者就不知道了;不同的编译软件、不同的编译条件,很复杂.必须由编译软件给出报告才能知道.

肃北蒙古族自治县15532674529: 单片机编程(C语言)
林卿银杏: P2口是8位口吧, 十六进制FE是 1111 1110. P2=0XFE的意思就是把信号1111 1110(1为高电平,0为低电平)送到P2口.P2口外接LED 后LCD灯可以点亮.

肃北蒙古族自治县15532674529: 单片机C语言编程 -
林卿银杏: /*该程序流水灯有两种模式,顺序左移和顺序右移,独立开关控制*/#include#include#define uchar unsigned char#define uint unsigned int uchar tmp,flag; sbit key1=P3^4; sbit key2=P3^5; void delay(uint z); void led(); void keyscan(); void main() { ...

肃北蒙古族自治县15532674529: 单片机的C语言编程 -
林卿银杏: #include <AT89X51.h> //包含头文件 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};//定义数码管段选码...

肃北蒙古族自治县15532674529: 用C语言编写单片机程序 -
林卿银杏: #include sbit csb_SAT= P1^0; //定义超声波发生脚 void delay(void) //延时25微秒,12T芯片用12M误差 0us { unsigned char a; for(a=11;a>0;a--); } void csb_fs(int dat) {while(dat--){csb_SAT=1;delay();csb_SAT=0;delay();}} //发射 void main() { ...

肃北蒙古族自治县15532674529: 什么是c语言单片机编程?
林卿银杏: 1.我们常说编程就是编写软件在操作系统平台上运行2.单片机就是一种类似于控制的芯片 你写好了程序写入单片机然后进行运行说白了 一个就是 软件编程 一个硬件编程

肃北蒙古族自治县15532674529: 单片机c语言编程 -
林卿银杏: 看你的单片机型号了,51单片机要求读之前写1,但如果该端口一直就作为输入的话,只要你没有特意给它赋值0,它默认就是1,可直接读. AVR单片机就要配置有关寄存器

肃北蒙古族自治县15532674529: 单片机用C语言的基础 -
林卿银杏: 单片机的外部结构:1、 DIP40双列直插;2、 P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3、 电源VCC(PIN40)和地线GND(PIN20);4、 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)5、...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网