标签:单片机
转行搞硬件。。acm算是走到头了,毕竟电子是自己专业的特色。。
初撸单片机,买的板子是STC89C52(某宝58大洋淘来的。。) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也。。)
说一下容易犯的错误吧。
1.串口驱动搞了1个多小时。。一直安装不上,后来跟着教程做的
2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2.。亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口?我找了一会也没找到。。)
3.工程式的代码敲起来有点不太习惯。。而且吐槽一下Keil 4 ,没缩进还能不能愉快的玩耍了。。
内容:
一:LED工作原理
贴张原理图。。
最开始看书上讲的原理很抽象。。这张图不错,很清楚
二:代码实现流水灯
基本思路:初始化状态为1111 1110 即只有最左边的灯亮,然后间隔性的往右移动0,(用到位移函数_crol_(a,b) 将a左移b位,循环左移并非像<< 运算似的最低位补0,右移自己脑补) 用到延时函数。。其实就是用循环卡住,大约O(24700000)==10ms
#include<reg52.h> #include<intrins.h> #define GPIO_LED P2 #define uint unsigned int #define uchar unsigned char void Delay10ms(uchar n); void main() { uchar i; GPIO_LED=0xfe;//1111_1110 while(1) { for(i=0;i<7;i++) { GPIO_LED=_crol_(GPIO_LED,1); Delay10ms(1); } for(i=0;i<7;i++) { GPIO_LED=_cror_(GPIO_LED,1); Delay10ms(1); } } } void Delay10ms(uchar n) { uchar i,j,k; while(n--) { i=50; while(i--) { j=38; while(j--) { k=130; while(k--); } } } }
标签:单片机
原文地址:http://blog.csdn.net/qq_16255321/article/details/42242797