新概念
51单片机C语言教程
----入门、提高、开发、拓展全攻略
郭天祥编著
电子工业出版社
例2.2.1 编写程序,点亮第一个发光二极管(part2_1.c  P27
#include <reg52.h> //52系列单片机头文件
sbit led1=P1^0;      //声明单片机P1口的第一位
void main()          //主函数
{
    led1=0;      /*点亮第一个发光二极管*/   
}
例2.2.2 编写程序,点亮P1口的若干二极管(part2_2.c  P39
#include <reg52.h>  //52系列单片机头文件
void main()          //主函数
{
    P1=0xaa;
    //while(1);     
}
例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42
#include <reg52.h>    //52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0;          //声明单片机P1口的第一位
uint i,j;
void main()              //主函数
{
    while(1)          //大循环
    {
        led1=0;                    /*点亮第一个发光二极管*/   
        for(i=1000;i>0;i--)        //延时
            for(j=110;j>0;j--);
        led1=1;                    /*关闭第一个发光二极管*/   
        for(i=1000;i>0;i--)        //延时
            for(j=110;j>0;j--);       
    }   
}
例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。(part2_4.c  P48
#include <reg52.h>            //52系列单片机头文件c编程网
#define uint unsigned int        //宏定义
sbit led1=P1^0;                  //声明单片机P1口的第一位
void delay1s();                //声明子函数
void main()                      //主函数
{
    while(1)                      //大循环
    {
        led1=0;                    /*点亮第一个发光二极管*/   
        delay1s();                //调用延时子函数
        led1=1;                    /*关闭第一个发光二极管*/   
        delay1s();                //调用延时子函数
    }   
}
void delay1s()                        //子函数体
{
    uint i,j;
    for(i=500;i>0;i--)       
        for(j=110;j>0;j--);
}
例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。(part2_5.c  P49)
#include <reg52.h>            //52系列单片机头文件
#define uint unsigned int        //宏定义
sbit led1=P1^0;                  //声明单片机P1口的第一位
void delayms(uint);                //声明子函数
void main()                      //主函数
{
    while(1)                      //大循环
    {
        led1=0;                    /*点亮第一个发光二极管*/   
        delayms(200);                //延时200毫秒
        led1=1;                    /*关闭第一个发光二极管*/   
        delayms(800);                //延时800毫秒
    }   
}
void delayms(uint xms)               
{
    uint i,j;
    for(i=xms;i>0;i--)              //i=xms即延时约xms毫秒
        for(j=110;j>0;j--);
}
例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.c  P53
#include <reg52.h>            //52系列单片机头文件
#include <intrins.h>
#define uint unsigned int        //宏定义
#define uchar unsigned char
void delayms(uint);                //声明子函数
uchar aa;
void main()                      //主函数
{
    aa=0xfe;                    //赋初值
    while(1)                      //大循环
    {
        P1=aa;
        delayms(500);            //延时500毫秒
        aa=_crol_(aa,1);        //将aa循环左移1位后再赋给aa
    }   
}
void delayms(uint xms)               
{
    uint i,j;
    for(i=xms;i>0;i--)              //i=xms即延时约xms毫秒
        for(j=110;j>0;j--);
}
例3.2.1编写程序使第一个数码管显示8(part2.1_.1c  P59
#include <reg52.h>            //52系列单片机头文件
sbit dula=P2^6;          //申明U1锁存器的锁存端
sbit wela=P2^7;          //申明U2锁存器的锁存端
void main()
{
wela=1;            //打开U2锁存器
P0=0xFE;          //送入位选信号
wela=0;            //关闭U2锁存器
dula=1;          //打开U1锁存器
P0=0x7F;        //送入段选信号
dula=0;          //关闭U2锁存器
while(1);          //程序停止到这里
}
例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。(part2.1_2.c  P61
#include <reg52.h>        //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;          //申明U1锁存器的锁存端
sbit wela=P2^7;          //申明U2锁存器的锁存端
uchar num;