编写程序1、头文件必不可少,至至少要包含芯片定义头文件/*头文件*注释#include<reg51.h>#include<intrins. h>#include"abcd.h"头文件一般有三类:a、51芯片头文件,主要包含定义好的特殊功能寄存器地址列表。b、库函数,如包含移位函数crol(,)的<intrins.h>C、用户自己定义的头文件。用户自已定义的头文件(放在project文件夹里)和安装文件中的头文件用的符号时不同的。6
◼ 编写程序 ◼ 1、头文件 ◼ 必不可少,至少要包含芯片定义头文件 ◼ /*头文件*/ 注释 ◼ #include<reg51.h> ◼ #include<intrins.h> ◼ #include”abcd.h” ◼ 头文件一般有三类: ◼ a、51芯片头文件,主要包含定义好的特殊功能寄存器地址列表。 ◼ b、库函数,如包含移位函数_crol_( , )的<intrins.h> ◼ c、用户自己定义的头文件。 ◼ 用户自己定义的头文件(放在project文件夹里)和安装文件中的头文件 用的符号时不同的。 6
2、宏定义#define ucharunsignedchar#define uint unsigned int# define Pi 3. 143、SFR中位变量定义4、全局变量声明全局变量声明,整个程序都要用到的变量,从定义开始处往后均可以使用。5、函数声明由于ANSIC的特征是,程序只有先出现才可以使用,因此主程序中用到的函数均需要先定义,或者先声明之后再定义
2、宏定义 #define uchar unsigned char #define uint unsigned int # define Pi 3.14 3、SFR中位变量定义 4、全局变量声明 全局变量声明,整个程序都要用到的变量,从定义开始处往后均可以使 用。 5、函数声明 由于ANSI C的特征是,程序只有先出现才可以使用,因此主程序中用到 的函数均需要先定义,或者先声明之后再定义。 7
主程序void main (void)******/*预处理段*/(1)while/*不断重复主程序******/*主体*/18
◼ 主程序 ◼ void main(void) ◼ { ◼ ****** /*预处理段*/ ◼ while(1) /*不断重复主程序*/ ◼ { ◼ ***** /*主体*/ ◼ } ◼ } 8
参考程序:#include<reg51.h>#include<intrins.h>//包含移位函数crol()的头文件#define uchar unsigned char#define uint unsigned int//@12.000MHzvoid delay(uchar n){unsigned char i,j,k;for (k=0;k<n;k++)[i = 12;J = 169;do{while (--j) ;I while (--i);19
参考程序: #include <reg51.h> #include <intrins.h> //包含移位函数_crol_( )的头文件 #define uchar unsigned char #define uint unsigned int void delay(uchar n) //@12.000MHz { unsigned char i,j,k; for(k=0;k<n;k++) { i = 12; j = 169; do { while (-j); } while (-i); } } 9
Ⅱ主程序voidmain()(P1=0xfe;I/向P1口送出点亮数据while (1)(I/500为延时参数,可根据实际需要调整delay(500);P1=_crol_(P1,1);I/函数_crol_(P1,1)把P1中的数据循环左移1位17需要注意crol(m,n)函数包含在库函数<intrins.h>中,需要在源文件前些包含该头文件。两个参数,一个是被移位对象,一个是移动位数。crol(m,n)与<<运算符是不同的,<<运算中,会丢掉高位,低位补0;而crol会将高位补回低位思考:若用>>符号写程序,还需不需要用头文件<intrins.h>,最终的现象是什么呢?10
void main( ) //主程序 { P1=0xfe; //向P1口送出点亮数据 while (1) { delay(500); //500为延时参数,可根据实际需要调整 P1=_crol_(P1,1) ; // 函数_crol_(P1,1)把P1中的数据循环左移1位 } } 需要注意_crol_ (m,n)函数包含在库函数<intrins.h>中,需要在源文件前些包含 该头文件。两个参数,一个是被移位对象,一个是移动位数。 _crol_ (m,n)与<<运算符是不同的,<<运算中,会丢掉高位,低位补0; 而_crol_会将高位补回低位 思考:若用>>符号写程序,还需不需要用头文件<intrins.h>,最终的现象是什么 呢? 10