单片机流水灯串口控制的功能要求【从PC通过串口发送字符(‘R’,’L,‘S),分别控制流水灯向右流动、向左流动、停止】:

(1)编写完整的C语言程序实现功能要求,采用循环轮询结构;

答:循环轮转结构是在main函数中,按事先编写好的顺序进行执行,其缺点是实时性差,不适合有外部驱动的情况在这里不展示代码了。

(2)考虑采用前后台结构编程的话,程序的大体结构是什么样子的?用程序框图或文字描述一下;

答:前后台系统相比轮询系统,前后台系统在轮询系统的基础上加入了中断的概念,外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断我们称之为前台,main()函数中的无限循环称为后台。
其详细代码如下:

#include<reg51.h>
#include <absacc.h>
#include <intrins.h>
void UsartConfiguration();
void delay(int z);
void led_r();
void led_l();
void led_die();
void main()
{UsartConfiguration();while(1){}
}
void UsartConfiguration()//硬件初始化
{SCON=0X50;            TMOD=0X20;         PCON=0X80;         TH1=0XF3;              TL1=0XF3;ES=1;                    EA=1;                      TR1=1;
}void Usart() interrupt 4串行通信中断函数
{unsigned char receiveData;receiveData=SBUF;if(receiveData=='S'||receiveData=='s'||receiveData==83||receiveData==115){led_die();}if(receiveData=='L'||receiveData=='l'||receiveData==76||receiveData==108){led_l();}if(receiveData=='R'||receiveData=='r'||receiveData==82||receiveData==114){led_r();}RI = 0;SBUF=receiveData;while(!TI);            TI=0;
}
void led_r()//又流水灯
{char temp,num;temp=0x7f;for(num=0;num<8;num++){ P2=temp;delay(1000);temp=_cror_(temp,1);  }
}
void led_l()//左流水灯
{char temp,num;temp=0xfe;for(num=0;num<8;num++){ P2=temp;delay(1000);temp=_crol_(temp,1);}
}
void led_die()//灯熄灭
{P2=0x00;
}void delay(int z)//延时函数
{int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}

(3)如果可以采用多任务方式编程的话,程序的大体结构是什么样子的?用程序框图或文字描述一下。

答:多任务系统相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中,任务与中断一样,也具有优先级,优先级高的任务会被优先执行。但一个紧急事件在中断中被标志之后,如果事件对应的任务优先级足够高,就会立刻得到响应,相比前后台系统,多任务系统的实时性又被提高了。
其大致框架如下:
int flag1 = 0 ;
int flag2 = 0;
int flag3 = 0;
int main(void)
{
//硬件相关初始化
HardWareInit();
//OS初始化
RTOSInit();
//OS启动,开启多任务调度,不再返回
RTOSStart();
}
void ISR1(void)

{
flag1=1;//置标志位
}
void ISR2(void)
{
flag2=1;//置标志位
}
void ISR3(void)
{
flag1=3;//置标志位
}
void DoSomething1(void)
{
//无限循环,不能返回
for(;;)
{
if(flag1) {}
}
}
void DoSomething2(void)
{
//无限循环,不能返回
for(;;)
{
if(flag2) {}
}
}
void DoSomething3(void)
{
//无限循环,不能返回
for(;;)
{
if(flag3) {}
}
}

单片机流水灯串口控制流水灯相关推荐

  1. 51单片机电脑通过串口控制LED灯

    Hex模式:底层传输的实际数据 文本模式:把数据进行编码,显示ASCII码char字符,带括号的是控制字符,无法显示出来 代码 UART.c #include <REGX52.H>/** ...

  2. 单片机-四个按键控制流水灯

    单片机-四个按键控制流水灯 代码 代码 代码片. #include "reg51.h" sbit key1 = P2 ^ 0; sbit key2 = P2 ^ 1; sbit k ...

  3. 单片机:电脑通过串口控制LED灯

    题目概述: 电脑通过串口控制LED灯. 编程: #include<REG52.h> void delay(unsigned int xms) { unsigned int i,j; for ...

  4. CC2530串口控制LED灯奇怪玩法

    CC2530串口控制LED灯奇怪玩法 实验目的:CC2530用串口从上位机发送16进制命令代码来控制LED3.4.5.6并返回相应动作 文章目录 CC2530串口控制LED灯奇怪玩法 一.串口设置 二 ...

  5. 51单片机红外通信及控制LED灯(LCD1602显示)

    51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...

  6. 【GD32F427开发板试用】-01-UART1 串口控制LED灯亮灭

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:智能家居-九俊楚子 今天用GD32F427R开发板先测试了UART1的通信功能,然后通过 ...

  7. 51单片机_7-1独立按键控制流水灯方向

    文章目录 要求 资源 效果 main函数 要求 1.使用单片机内部定时器做为延时函数 2.独立按键K1控制流水灯左移 3.独立按键K2控制流水灯右移 资源 工程文件压缩包 链接:https://pan ...

  8. AVR单片机实践--ATmega16按键控制流水灯

    一.实验目的 1.掌握AVR单片机开发平台的搭建方法. 2.掌握GPIO的编程方法. 二.实验内容及结果 1.设计程序 自行设计电路,包括流水灯和4个按键,完成"按键控制流水灯样式" ...

  9. 单片机基础:开关控制LED灯的亮灭

    (一) 单片机的初级运用.通过两个开关来控制LED灯的亮灭.首先要使用Proteus来绘制电路原理图.图中的LED灯为共阴接法.如图: (二)当单片机P3口做输入时,首要让其端口输出1.如图中的P3^ ...

最新文章

  1. 2022-2028年中国阻燃纤维行业市场研究及前瞻分析报告
  2. 什么是智能仓储?一文带你彻底搞懂!
  3. String[]转化暴露“思维误区”
  4. 萌新的Linux的学习之路(十) --ip设置管理
  5. 串行并行程序在效率上的简单比较
  6. Nginx--虚拟主机
  7. medium font size in reuse project sapUiFontSize
  8. 工厂利用计算机实现温度调节属于,工厂利用计算机系统实现温度调节、阀门开关,该应用属于()。A.过程控制B.数据处理C.科学计算D.C...
  9. linux笔记_防止ddos攻击
  10. MATLAB实现三边定位
  11. 关于ireport中文不显示问题
  12. 理解浏览器的历史记录
  13. 离散数学及其应用复盘 | 第3版第4章——谓词逻辑思维导图梳理(复习专用)
  14. STM32f107 CAN滤波器设置
  15. DSP篇--C6701功能调试系列之 FLASH测试
  16. 对 oc 学习的 阶段反思
  17. ubuntu更新源修改更新源
  18. java web热区链接_HTML图片热区map area的用法
  19. 鸿蒙系统为国,华为发布鸿蒙系统,国人为之骄傲
  20. 《地理信息系统导论》第6章 几何变换 复习题

热门文章

  1. [Redis]怎么查看以xx开头的所有key?有什么坑?BigKey问题?
  2. 安卓开源项目周报0315
  3. 【剑指Offer(专项突破)】002. 二进制加法(Java实现) 详细解析
  4. PVCBOT【15号A版】机械昆虫--六足爬行机器人
  5. 水彩风职业规划PP模板
  6. Linux文本处理自定义,Linux中文本处理命令sed的使用示例分享
  7. 专访肖佳:写一本技术图书是水到渠成的
  8. Google Play市场包体大小判断
  9. 算法笔记_图算法专题_关键路径 AOV网和AOE网
  10. 你应该知道的一个PyTorch小技巧