找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1897|回复: 1
收起左侧

这是一个简单的单片机流水灯与蜂鸣器使用,适合于新手简单易学

[复制链接]
ID:827939 发表于 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毫秒
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:489631 发表于 2020-10-12 22:27 | 显示全部楼层
你好  这行注释是不是有误
temp = 0xf;  //给temp赋值十六进制0xfe,二进制位1111 1110,一次点亮四个LED灯
如果赋值0xfe的话应该一次只亮一个灯
这里的temp = 0xf;  是不是应该是赋值f0   1111 0000
此处f0的0是不是可以省略
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表