标题: 这是一个简单的单片机流水灯与蜂鸣器使用,适合于新手简单易学 [打印本页]

作者: 卢OK    时间: 2020-10-11 09:04
标题: 这是一个简单的单片机流水灯与蜂鸣器使用,适合于新手简单易学
#include <reg52.h>         //引用c51头文件
#include <intrins.h> //循环移位标准函数


#define uchar unsigned char //用define对char、int变量进行宏定义
#define uint unsigned int   //*宏定义后面不用加分号,因为他是预处理指令不是语句
sbit aa = P2^3;  //蜂鸣器相关变量




uchar temp; //定义LED相关函数


void delay(z) //引用延时函数delay(毫秒级)
{
         int x,y;
         for(x = z; x > 0; x--)
                 for(y = 144; y > 0; y--);
                //这里当for只执行下一条for语句是不用加花括号;两条以上需要花括号
}


void main()                  //*main函数自带循环
{
        temp = 0xf;  //给temp赋值十六进制0xfe,二进制位1111 1110,一次点亮四个LED灯
        P1          = temp;  //给P1口赋值temp
        delay(100);  //毫秒级延时函数,持续时间为100毫秒
        while(1)         //使用while循环函数,一个大循环
        {
                temp = _crol_(temp,1);        /*循环移位函数_crol_,表示为左移循环1位,括号里的
                temp左移1位赋值给括号外的temp结果为1111 1101*/
                P1=temp;
                aa = ~aa; //~取反值,点响蜂鸣器
                delay(100);         //毫秒级延时函数,持续时间为100毫秒
        }
}


作者: jdf    时间: 2020-10-12 22:27
你好  这行注释是不是有误
temp = 0xf;  //给temp赋值十六进制0xfe,二进制位1111 1110,一次点亮四个LED灯
如果赋值0xfe的话应该一次只亮一个灯
这里的temp = 0xf;  是不是应该是赋值f0   1111 0000
此处f0的0是不是可以省略




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1