demi的博客

对单片机C语言的一些误用和总结

demi的头像

在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了。我们是不是在写程序的时候错误很多就算编译通过了也达不到我们预期的结果,完了自己是不是也很难找到错在哪儿吧?我绝得语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷阱,所以我发这篇博客有两个目的一是:把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下~

第一次:

1.关于自增自减(即++i,i++)

单片机编程思想之消除阻塞

demi的头像

本人写单片机程序也有五六年了,其实在三年前我写的程序里几乎没有delay()了,如果你的程序没有delay那么整个程序执行起来会非常的快。下面我们来分析下平时写单片机程序中所遇到的阻塞,以及解决思路。

在讲之前我们的程序框架是main函数里先初始化,然后while(1),前台程序是各种中断。

阻塞有:

①按键程序判断会用到delay消抖,典型的消抖是5ms。

②动态显示时候显示一位数码管时候也会用到延时5ms左右。

③等待串口发送完成。

④好像就这些比较耗时的了。

解决方法:

①像这样的程序,我们可以在定时中断里面判断按键的状态

②解决方法同上

③串口中断发送估计很多人没有用过,也有很多人觉得没有必要,我想说的是你没有写过大型项目,对实时性要求不高,如果你的程序很大,需要服务的地方很多,那你用阻塞式发送很可能会降低整个程序的实时性了,例如9600波特率发送一个字符1ms时间,如果一次发送50个字符就是相当于执行delay(50);那怎么用中断发送呢?很简单,打开串口\发送中断,第一个字符你程序发送,剩余的在发送中断里面发送即可。

页面

订阅 RSS - demi的博客