并行口扩展4个8位并行输出口

#include <reg51.h>  //51头文件
#include <intrins.h>  // 循环头文件
#define uchar unsigned char   //定义uchar为无符号字符型
#define uint unsigned int //定义uint为无符号整型
#define ulong unsigned long int // 定义ulong为无符号长整型
//,利用移位寄存器实现串口数据发送,数据发送通过写SBUF寄存器完成,写入SBUF的8位数据通过RXD逐位发送,移位脉冲则通过TTXD发送。
//,即移位寄存器输入/输出模式,串行数据通过RXD输出,TXD则用于输出移位时钟脉冲
sbit MR = P2^0;
sbit LED_Dir_Pressed = P2^1;
sbit LED_Amount_Pressed = P2^2;
uchar Dir_Flag = 0;  //流水灯的方向
uchar LED_Count = 1; // 流水灯的数目
uchar LED_Count_Flag = 0;//按键按下的标志


void Delay_Ms(uint m); //延迟函数
void USART_Init(void); //串口初始化函数
void Send_Char(uchar cdata);   //发送函数
void Button_Scan(void);   //按键扫描函数
uchar Dir_Flag;  //方向标志
uchar LED_Count;   //流水灯数目
uchar LED_Count_Flag; //流水灯数目标志位




//毫秒级函数
void Delay_Ms(uint m)
{
uchar i = 0; 
while(m--)
{
for(i =112; i>0; i--);
     }
}


//串口方式0初始化 可以不使用中断,即查询方式,此处使用了中断方式
void USART_Init(void)   //数据初始化
{
    SCON=0x00; 
    EA=1; //打开全局中断控制 ,在此条件下·,由各个中断控制位确定相应中断的打开或关闭。
    ES=1;   //打开串行口中断
MR = 1;
}


//发送字节数据
void Send_Char(uchar cdata)
{
      SBUF = cdata;   //数据送串口数据缓冲器
}


//中断初始化
void USART_Hander() interrupt 4
{
TI = 0;  //发送数据结束
}


//按键扫描函数
void Button_Scan(void)
{
if(LED_Dir_Pressed == 0)
{
Delay_Ms(5);
if(LED_Dir_Pressed == 0)
{
Dir_Flag = !Dir_Flag;
}
 while(!LED_Dir_Pressed);
}

if(LED_Amount_Pressed == 0)
{
Delay_Ms(5);
if(LED_Amount_Pressed == 0)
{
LED_Count++;
   LED_Count_Flag = 1;
if(LED_Count == 33)
LED_Count = 1;
}
while(!LED_Amount_Pressed); //等待按键释放
}
}




int main()
{
   uchar i = 0;
   uchar Send_Data = 0; //发送的字节数据
   uchar Temp = 0;    //用于将32位数据分成4个字节
   ulong Cdata = 0x80000000;  //用来控制32位流水灯的,转化为二进制位1000 0000 0000 0000 0000 0000 0000 0000

   USART_Init();// 串口初始化
 
  while(1)
  {
 MR = 1;
 Temp = 0;    
 Button_Scan();   //按键扫描
 if(LED_Count_Flag == 1) //如果改变灯数的按键按下
 {
 Cdata = 0xffffffff << (32-LED_Count);  //代表流水灯的个数
     LED_Count_Flag = 0;  
 }
 for(i = 4; i>0; i--) //分成4个字节依次发送
 {  
  Send_Data = Cdata >> Temp;
  Temp = Temp + 8;
  Send_Char(Send_Data);
 }
 
 if(Dir_Flag == 0)
  Cdata = _lror_(Cdata,1); 
 else
  Cdata = _lrol_(Cdata,1); 
 
  Delay_Ms(200);
  MR = 0;   //消除164本身没有锁存的闪烁问题
  } 
  
}
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
<p style="text-align:left;"> <span> </span> </p> <p class="ql-long-24357476" style="font-size:11pt;color:#494949;"> <span style="font-family:"color:#E53333;font-size:14px;background-color:#FFFFFF;line-height:24px;"><span style="line-height:24px;">限时福利1:</span></span><span style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;">购课进答疑群专享柳峰(刘运强)老师答疑服务。</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <strong><span style="color:#337FE5;font-size:14px;">为什么说每一个程序员都应该学习MySQL?</span></strong> </p> <p class="ql-long-24357476"> <span style="font-size:14px;">根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。</span> </p> <p class="ql-long-24357476"> <img src="https://img-bss.csdn.net/202003301212574051.png" alt="" /> </p> <p class="ql-long-24357476"> <span style="font-size:14px;">使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。</span><br /> <br /> <span style="font-size:14px;">学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!</span> </p> <span></span> <p> <br /> </p> <p> <span> </span> </p> <h3 class="ql-long-26664262"> <p style="font-size:12pt;"> <strong class="ql-author-26664262 ql-size-14"><span style="font-size:14px;color:#337FE5;">【课程设计】</span></strong> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;"><br /> </span> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;font-size:14px;">在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。</span> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;"><br /> </span> </p> <p style="font-size:12pt;"> <span style="font-weight:normal;font-size:14px;">本课程包含3大模块:</span><span style="font-weight:normal;font-size:14px;"> </span> </p> </h3> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">一、基础篇:</span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;">主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;"><br /> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">二、SQL语言篇</span></strong><span class="ql-author-26664262" style="font-size:14px;">:</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;">本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,</span><span style="font-size:14px;">学会熟练对库表进行增删改查等必备技能。</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"><br /> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">三、MySQL进阶篇</span></strong><span style="font-size:14px;">:</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。</span> </p> <span><span> <p style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"> </span><img src="https://img-bss.csdn.net/202004220208351273.png" alt="" /> </p> </span></span>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

驭风男孩

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值