您当前的位置:五五电子网电子知识单片机-工控设备51单片机51单片机入门参考C程序 正文
51单片机入门参考C程序

51单片机入门参考C程序

点击数:7950 次   录入时间:03-04 11:40:50   整理:http://www.55dianzi.com   51单片机

                        sfrt 变量名=地址值。

                          2)符号P1_0来表示P1.0引脚。

                          在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P1_0,可是P1_0是不是就是P1.0呢?你这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil
                        C的关键字sbit来定义,sbit的用法有三种:

                          第一种方法:sbit 位变量名=地址值

                          第二种方法:sbit 位变量名=SFR名称^变量位地址值

                          第三种方法:sbit 位变量名=SFR地址值^变量位地址值

                          如定义PSW中的OV可以用以下三种方法:

                        sbit OV=0xd2 (1)说明:0xd2是OV的位地址值

                        sbit OV=PSW^2 (2)说明:其中PSW必须先用sfr定义好

                        sbit OV=0xD0^2 (3)说明:0xD0就是PSW的地址值

                          因此这里用sfr
                        P1_0=P1^0;就是定义用符号P1_0来表示P1.0引脚,如果你愿意也可以起P10一类的名字,只要下面程序中也随之更改就行了。


                        3)main称为“主函数”。

                          每一个C语言程序有且只有一个主函数,函数后面一定有一对大括号“{}”,在大括号里面书写其它程序。

                          从上面的分析我们了解了部分C语言的特性,下面再看一个稍复杂一点的例子。

                          例1-2 让接在P1.0引脚上的LED闪烁发光

                        /*************************************************


                        单灯闪烁程序

                        *************************************************/

                        #include "reg51.h"

                        #define uchar unsigned char

                        #define uint unsigned int

                        sbit P10=P1^0;

                        /*延时程序

                        由Delay参数确定延迟时间

                        */

                        void mDelay(unsigned int Delay)

                        { unsigned int i;

                        for(;Delay>0;Delay--)

                        { for(i=0;i<124;i++)

                        {;}

                        }

                        }

                        void main()

                        { for(;;)

                        { P10=!P10; //取反P1.0引脚

                        mDelay(1000);

                        }

                        }

                          程序分析:主程序main中的第一行暂且不看,第二行是“P1_0=!P1_0;”,在P1_0前有一个符号“!”,符号“!”是C语言的一个运算符,就像数学中的“+”、“-”一样,是一种运算任号,意义是“取反”,即将该符号后面的那个变量的值取反。


                          注意:取反运算只是对变量的值而言的,并不会自动改变变量本身。可以认为C编译器在处理“!P1_0”时,将P1_0的值给了一个临时变量,然后对这个临时变量取反,而不是直接对P1_0取反,因此取反完毕后还要使用赋值符号(“=”)将取反后的值再赋给P1_0,这样,如果原来P1.0是低电平(LED亮),那么取反后,P1.0就是高电平(LED灭),反之,如果P1.0是高电平,取反后,P1.0就是低电平,这条指令被反复地执行,接在P1.0上灯就会不断“亮”、“灭”。

上一页  [1] [2] [3] [4]  下一页


本文关键字:单片机  程序  51单片机单片机-工控设备 - 51单片机