首页 > 编程语言 >看看硬件工程师是如何写代码的(一),巧妙的程序!

看看硬件工程师是如何写代码的(一),巧妙的程序!

时间:2024-10-22 09:49:28浏览次数:3  
标签:代码 LED 工程师 void 巧妙 硬件 1mscount 100 1ms

 更多电路设计,PCB设计分享及分析,可关注本人微信公众号“核桃设计分享”!

连载系列文章,欢迎点赞收藏关注,不迷路!

目前本人已经不再写代码了,只是想把自己走过的弯路,踩过的坑分享出来,希望更多的小伙伴能看到,少走弯路,仅供参考哈

回想起来核桃已经很多年没有敲代码了,这么多年一直从事硬件工程师这个岗位,相比于软件的ABCD,我更倾向于原理图的设计与PCB,喜欢折腾

图片

,喜欢松香的味道。

但是,刚毕业那会,要想得到更多的机会,只能硬着头皮学硬件和软件,大概有一年左右的时间吧,都是一个人兼顾软件和硬件,自己画板,自己调代码!

说实话,只有自己写代码调试自己的板子,才能更加清楚的认识到自己的板卡还有哪些可以优化地方,对于以后从事硬件工程师的岗位益处良多!

我们先来看一段51单片机的点灯程序,如下:

void main(void)

while(1)

  {

     LED=0;

     delayms(100);

     LED=1;

    delayms(100);

    }

}

程序是非常简单的,相信很多小伙伴刚开始学的时候都是这样写的,程序一样是可以正常运行的,那这段程序有什么问题呢?

可以看的出来,整个大循环里面除了LED=0和LED=1外,剩下的就是 delayms(100);这个延时函数,是一直让CPU处于等待的状态,啥事都干不了,一直空耗着CPU的资源。

思考问题:
如果只是为了点亮一颗LED,这样写是没问题的,但是实际的项目中不可能用一个CPU啥事都不干,就为了点灯,我相信没有哪个老板肯让你这么浪费

图片

,所以我们首要做的就是:

把CPU释放出来,哪怕让它一遍一遍的扫描有什么任务可以执行,也不要让它一直在空等待!

那该如何实现?

具体思路:

从上面的程序可以知道,延时的时间是delayms(100),也就是100ms,那我们可以为系统加入一个1ms的基准时间,然后再对这个基准时间进行计数100次,达到100次后,清理该计数值,再对LED的状态进行转换即可!

大概程序如下:

#include<reg52.h>

sbit LED=P1^0;   //定义LED管脚

bit 1mscriterion=0;//1ms时间基准

unsigned int 1mscount=0;//1ms基准时间计数变量

unsigned char LEDsign=0;//LED状态变量,0为点亮,1为熄灭

void Time0int(void)

   TMOD &= 0xf0 ;

   TMOD |= 0x01 ; //定时器 0 工作方式 1

   TH0 = 0xfc ; //定时器初始值

   TL0 = 0x66 ;

   TR0 = 1 ;

   ET0 = 1 ;

}

void LEDcontrol()

{

    if(LEDsign==0)

       {

          LED=0;//LED点亮

       }

    else

      {

         LED=1;//LED熄灭

      }

}

void LEDStateful Switch(void)

{

   if(1mscriterion)  //1ms基准时间到

    {

        1mscriterion=0;先清零

        1mscount++;//LED计数器加1

        if(1mscount>=100) //计数达到100,证明100ms已经到了

         {

             1mscount=0;//一定要先清零

              LEDsign=!LEDsign;//LED状态取反

          }

     }

}

void main(void)

{

 Time0int();

  EA=1;

  while(1)

   {

      LEDcontrol();

      LEDStateful Switch();

    }

}

void Time01ms(void)interrupt 1

{

   TH0=0xfc;  //重新赋值

   TL0=0x66;

   1mscriterion=1; //1ms基准时间到

由于核桃很长时间没有写代码了,有不对的地方望小伙伴们能指出来!如果想系统的学习C语言的,可以到B站观看“小智学长”的开源教程,或者直接戳这里:

https://www.bilibili.com/video/BV1C4421U7c2/?spm_id_from=333.999.0.0&vd_source=5f8281657f114a37116180800654c4ec

还有核桃不是专业写代码的,以上仅供参考哈!

好了,这章就先写到这吧!我们下一章接着唠!

如果本文对你有所帮助,欢迎点赞关注

图片

你们的支持就是我创作最大的动力

图片

翻译

搜索

复制

标签:代码,LED,工程师,void,巧妙,硬件,1mscount,100,1ms
From: https://blog.csdn.net/peiorrong/article/details/143072291

相关文章

  • 车载多屏的实现方案屏幕管理的核心DisplayContent4.SurfaceFlinger中屏幕硬件的加载安
    ......
  • 入门网络安全工程师要学习哪些内容
        大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网络安全工程师需要学什么?知了堂小编总结出以下要点。网络安全工程师是一个概称,学习的东西很多,具体学什么看自己以后的职业定位。如果你以后想成......
  • AT2401C 功率放大器(PA)2.4g集成芯片 完全取代替代RFX2401C兼容软件硬件
    AT2401C功率放大器(PA)2.4g集成芯片完全取代替代RFX2401C兼容软件硬件AT2401C功率放大器(PA)射频前端集成芯片,它是一款面向Zigbee,无线传感网络以及其他2.4GHz频段无线系统的全集成射频功能的射频前端单芯片。AT2401C内部集成了功率放大器(PA),低噪声放大器(LNA),芯片收发开关控制......
  • 05安装Linux的硬件要求
    每天五分钟学Linux|第五课:安装Linux的硬件要求大家好!欢迎继续我们的“每天五分钟学Linux”系列教程。在前面的课程中,我们探讨了Linux是什么、它的历史、主要的发行版以及它与Unix的关系。今天,我们将一起来看看安装Linux所需的硬件要求。为什么要了解硬件要求?在安装任何......
  • 看看硬件工程师是如何写代码的(二),榨干CPU的性能
     更多电路设计,PCB设计分享及分析,可关注本人微信公众号“核桃设计分享”!目前本人已经不再写代码了,只是想把自己走过的弯路,踩过的坑分享出来,希望更多的小伙伴能看到,少走弯路,仅供参考哈!这章重点给新手们提供一个能最大利用CPU性能的程序架构思路,具体程序就不再展示了。前言......
  • 指针(二):数组指针巧妙玩法
    目录数组名的理解数组地址与数组首元素地址区别指针访问数组冒泡排序二级指针指针数组指针数组模拟二维数组数组名的理解在介绍数组指针之前先通过一段代码了解一下数组名的本质是什么。#include<stdio.h>intmain(){ intarr[]={1,2,3,4,5}; int*p1=......
  • 视觉之相机硬件选型
    硬件1)相机2D相机类型:线阵(一行一行成像,拼接成图),像素高,速度慢面阵(瞬间成像),像素低,速度快(市面常见)芯片:CCD(性能好)CMOS(价格低,主导)颜色模式:黑白相机、彩色相机(颜色识别、深度学习)传感器大小:单位英寸,常见尺寸有1、2/3、1/2、1/3、1/4英寸等。1英寸cmos传感器是16mm。这里的......
  • 计算机网络、网络工程师专业英语-2
    局域网与城域网、无线通信网、网络互连与互联网、网络安全相关专业词汇1(LowRate-WPAN)低速无线个人网2AMPS(AdvanceMobilePhoneSystem)高级移动电话系统3AODV(AdhocOn-DemandDistanceVector)按需分配的距离矢量协议4AP(AccessPoint)接入点5AST(Average......
  • IPMI(智能平台管理接口,Intelligent Platform Management Interface)是一种行业标准的接
    IPMI(智能平台管理接口,IntelligentPlatformManagementInterface)是一种行业标准的接口规范,主要用于服务器和计算机系统的管理。它提供了硬件监控和管理功能,使管理员能够远程监控和控制计算机系统。以下是IPMI的一些主要特点和功能:主要特点硬件监控:IPMI能够监控系统的硬件状态......
  • 主动管理技术(Active Management Technology,AMT)是英特尔(Intel)推出的一种硬件管理解决方
    主动管理技术(ActiveManagementTechnology,AMT)是英特尔(Intel)推出的一种硬件管理解决方案,专门用于企业级计算环境。AMT是英特尔管理引擎(IntelManagementEngine,ME)的一部分,旨在提供全面的远程管理和维护功能。以下是AMT的主要特点和功能:1. 远程管理远程访问:AMT允许IT管理员在操......