51单片机STC89C52控制LED流水灯左移(使用位运算符实现)

发布者:cangart最新更新时间:2022-10-08 来源: csdn关键字:51单片机  位运算符 手机看文章 扫描二维码
随时随地手机看文章

/*-----------------------包含头文件区域-------------------------*/

#include  //单片机头文件 

/*-----------------------函数声明区域---------------------------*/ 

void delay(unsigned int xms);//延时函数声明

/*-----------------------主函数区域-----------------------------*/

void main()

{

unsigned char i,j;//定义无符号字符型变量i和j(范围为0~255)

while(1) //重复执行while循环体的程序

{

i=0xFF; //给i赋值1111 1111

P2=i; //给P2端口赋i的值 

delay(500); //延时500ms

for(j=0;j<8;j++)//循环8次

{

i=i<<1; //将i的值左移1位(高位丢弃,低位补0)

P2=i; //将i的值赋给P2端口

delay(500); //延时500ms

}

}

/*----------------------------------------------------------------

函数名称:delay

函数功能:延时

函数形参:xms为延时时间

返 回 值:无

----------------------------------------------------------------*/

void delay(unsigned int xms)

{

unsigned int i,j; //定义无符号整形变量i(范围为0~65535)

for(i=xms;i>0;i--) //执行xms次即延时x毫秒

for(j=115;j>0;j--); //延时1ms(给i赋1ms的延时值,循环体为空时执行i--指令115次为1ms)

}


关键字:51单片机  位运算符 引用地址:51单片机STC89C52控制LED流水灯左移(使用位运算符实现)

上一篇:51单片机STC89C52驱动一个数码管显示0~9,A~F
下一篇:51单片机STC89C52控制LED跑马灯左移(使用C51自带库_crol_()实现)

推荐阅读最新更新时间:2024-11-19 18:14

基于8051单片机的中断控制
(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。如果是同一优先级的中断,则按单片机内部的自然优先级顺序(外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断)响应中断。 CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。 (2)由中断允许寄存器IE控制开放和禁止中断。欲开放某一中断,则应先开放总中断允许(EA置1),然后开放相应中断的中断允许(相应位置1);若要要禁止中断,则EA置O即可。 (3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0
[单片机]
关于51单片机外部中断响应
外部中断方式最好设为下降沿方式,特别是中断引脚接按键的情况。 外部下降沿中断:SETB IT0。每个机器周期都由硬件对引脚自动采样,若连续在2个周期采样到电平从高到低,则认定有中断请求,IE0=1。IE0会一直保持到该中断请求被CPU响应,响应前都不会自动清零,只有在响应后硬件才自动将IE0清零IE0=0。 外部低电平中断:CLR IT0。当中断引脚为低电平时,并保持一个机器周期,硬件自动置IE0=1。如果在下一个周期采样到中断引脚为高电平时,硬件自动将IE0清0。中断标志位自动清0条件:下降沿中断只有CPU响应中断同时才会清0,否则一直保持。低电平中断:任何时候当外部中断引脚为低电平时,IE0=1;为高电平时,IE0=0,所以不
[单片机]
MSC51单片机交通灯程序
/*************************************************************** * 程序名称:MSC51单片机交通灯 晶振:12.00 P1口 * 实验对象:HC6800单片机学习开发板 * 单 片 机:AT89S52或STC89C52 时间:红绿灯各亮10s * * 更多的资料和程序共享请关注51hei.com ****************************************************************/ /#include reg52.h #define uchar unsigned char /*宏定义 */ #defin
[单片机]
51单片机(十)—— 8位数码管-数码管扫描
一、原理介绍 关于数码管的控制电路,在《51单片机(八)》中有详细的介绍,硬件电路如下图所示。 在这个实验中,我们对数码管进行扫描。在进行实验时,需要将单片机的P00~P07引脚与J44相连。接口的对应关系是(P00—D0),……,(P07—D7)。将单片机的P10和P11引脚与J45相连,P10与J45上的DM对应,P11与WM对应。 二、实例介绍 这个实验的代码如下所示 #include reg52.h //包含头文件,一般情况不需要改动 #define DATA P0 //定义数据端口 程序中遇到DATA 则用P0口 替换 sbit DM = P1^0; //定义锁存使能端口 段锁存 sbit WM = P1
[单片机]
<font color='red'>51单片机</font>(十)—— 8位数码管-数码管扫描
51单片机】定时/计数器
修改日志 时间 修改内容 023-03-13 初稿完成 TMOD不能位寻址 ,只能将整个寄存器一起配置。 TCON 能位寻址 。用来控制定时器的启动、停止,标识定时器的溢出和中断情况。 定时器/计数器模式控制寄存器(TMOD) GATE = 0 不受外部中断控制 GATE = 1 受外部中断控制(即使软件开启了,也要外部中断引脚置位才行) 方式0 13位定时器/计数器,TL0(TL1)只用低5位参与分频,TH0(TH1)整个8位全用。 方式1 16位定时器/计数器 方式2 8位自动重装载定时器,实际只用低8位定时/计数,当溢出时,高8位的值自动重装入低8位。 方式3 T0此时作为两个独立的8位定时器/计数器
[单片机]
【<font color='red'>51单片机</font>】定时/计数器
基于51单片机+LCD1602显示
LCD1602介绍 LCD1602相关引脚 LCD1602写命令、写数据相关操作图 根据上面时序图和时序参数图我们可以写出 写命令代码 和写数据代码 写命令 代码 写命令 void write_com(char command) { RS = 0; RW = 0; //高读低写 LCD = command; delay5ms(); //这里延时最低要30纳秒 我们直接给5ms E = 1;//使能拉高 delay5ms(); //最低要求延迟150纳秒 我们直接给5ms E = 0; } 写数据 代码 写数据 void write_data(char data) {
[单片机]
基于<font color='red'>51单片机</font>+LCD1602显示
51单片机由软件实现的PWMLED渐亮、渐暗效果
#include reg51.h sbit LEDR= P2 ^ 5; //P2.0引脚上接了一个红的发光二极管 sbit LEDG = P2 ^ 6; //P2.1引脚上接了一个绿的发光二极管 void delay (unsigned char d){ // 延时功能函数--由d决定延时长度 unsigned char i; while( d-- != 0) { for(i = 0; i 8; i++); } } void delay1 (unsigned int d){ // 延时功能函数--由d决定延时长度 unsigned char i; while( d-- != 0)
[单片机]
51单片机的串口中断设置
首先,你要用软件允许中断, 即C语言中EA = 1; 允许总中断ES = 1; //允许串口中断汇编中可用 SETB EA ;允许总中断 SETB ES ;允许串口中断 当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。 当然,单片机发送完一帧数据,TI也会置1,同样会产生中断! 一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据; 接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。 补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器S
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved