用c语言对单片机编程,对c语言的程度要求是怎样的

罗汉松怎么养2023-05-07  28

用c语言对单片机编程,对c语言的程度要求不高。

用c语言对单片机编程,对c语言的程度要求非常低,只要会用几个语句就可以了。

熟记“if,while,for,switch”这四个命令语句和“intchar”变量类型,外加判断运算关系符和数组就可以了。

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

你好:

对于标准的51来说,io口在作为输入时需先对其写1,这在44键盘中应用比较灵活。下面把原来的哪些肤浅的注释都去掉了,把认为对理解比较重要的部分重新写了一遍,请从main开始看起。

void Keys_Scan() //键盘扫描程序

{

uchar Tmp;

P1 = 0x0f; //低四位赋值1作为输入(51准双向Io口的特点),高四位用于输出全0。用于列扫描。判断被按下按键属于哪一列

DelayMS(1);

Tmp = P1 ^ 0x0f; //这里关键是异或的作用,任何位与0异或值不变,1异或取反。当有按键按下时,低四位中必有一列读都0,低四位原来为零的位与1异或后变为1,假设低四位读到1101,则与0x0f低四位1111异或后得到0010,表示第2列有按键按下。

switch(Tmp) //判断读到的列标,并将列标存入KeyNO

{

case 1: KeyNO = 0; break; //00000001 第1列有按键按下

case 2: KeyNO = 1; break; //00000010 第2列有按键按下

case 4: KeyNO = 2; break; //00000100 第3列有按键按下

case 8: KeyNO = 3; break; //00001000 第4列有按键按下

default: KeyNO = 16;

}

P1 = 0xf0; //同理,将高四位作为输入,第四位输出全0,用于行扫描,判断被按下的键属于哪一行

DelayMS(1);

Tmp = P1 >> 4 ^ 0x0f; //高四位读到的值移到第四位再异或,数值便于case处理。原理同上面列扫描

switch(Tmp)

{

case 1: KeyNO += 0; break; //若为第1行,则列标即为键值

case 2: KeyNO += 4; break; //若为第2行,则列标+4为键值

case 4: KeyNO += 8; break; //若为第3行,则列标+8为键值

case 8: KeyNO += 12; //若为第4行,则列标+12为键值

}

}

void Beep()

{

uchar i;

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

{

DelayMS(1);

BEEP = ~BEEP;

}

BEEP = 1;

}

void main()

{

P0 = 0x00;

while(1)

{

P1 = 0xf0; //p1高四位作为输入,低四位输出,实际硬件接线应该是高四位与第四位相连

if(P1 != 0xf0) //读到P1 != 0xf0,即有按键按下,高四位中读到0

Keys_Scan(); //若有键按下,则扫描

if(Pre_KeyNO != KeyNO) //这里的作用是判断是否有新的按键按下 Pre_KeyNO != KeyNO,来排除一直按下某个键的情况Pre_KeyNO = KeyNO

{

P0 = ~DSY_CODE[KeyNO]; //若有新键按下,显示键值,

Beep(); //若有新键按下,吱一声

Pre_KeyNO = KeyNO; //这一句比较重要,把新得到的键值赋给先前键值变量,用以下次循环时前面if语句判断是否有新键按下

}

DelayMS(100);

}

}

单片机编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。

1单片机的汇编语言

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响川可语言效率的特殊规定。例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。

2单片机的C语言

单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算谏磨快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中栗用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:

对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。程序有规范的结构,可分为不同的函数。这种方式可便程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。

编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。

功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。

单片机C语言作为一种非常方便的语言而得到广泛的支持,(语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片翻U均不同较快地移植过来。

用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。

单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。

学习c语言和单片机是有很大关系的。因为单片机既可以用汇编语言编写程序,也可以使用c语言编写程序。然而汇编语言是接近与机器的语言,代码可移植性差,导致其不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。c语言是高级语言,编写程序灵活性很强,代码可移植性很好,所以许多人在编写单片机程序时,往往选择的是使用c语言,只有在极少数情况下才选择使用汇编语言。

以上就是关于用c语言对单片机编程,对c语言的程度要求是怎样的全部的内容,包括:用c语言对单片机编程,对c语言的程度要求是怎样的、单片机c语言、单片机编程语言一般有哪几种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:https://juke.outofmemory.cn/read/3827199.html

最新回复(0)