历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2020年11月25日 | 时间继电器 倒计时控制 定时通断开关模块程序包

2020-11-25 来源:51hei


#include           //用52的头文件  里面加的引脚再定义  

#include "intrins.h"   //延时

sfr AUXR = 0x8e;

sfr P5 = 0xc8;                         //p5定义  是加的

sfr P5M0 = 0xc9;

sfr P5M1 = 0XCA;                 

sfr P3M0 = 0xb2;                //p3口设置强推完的定义

sfr P3M1 = 0Xb1;

sfr P1M0 = 0x92;                //p0口设置强推完的定义                   这样设置数码管就亮

sfr P1M1 = 0X91;

/***********************掉电存储开始********************/

typedef unsigned char BYTE;

typedef unsigned int WORD;          //类型定义

unsigned char x = 0;

sfr  IAP_DATA     =   0xC2;            //IAP数据寄存器

sfr  IAP_ADDRH    =   0xC3;            //IAP地址寄存器高字节

sfr  IAP_ADDRL    =   0xC4;            //IAP地址寄存器低字节

sfr  IAP_CMD      =   0xC5;            //IAP命令寄存器

sfr  IAP_TRIG     =   0xC6;            //IAP命令触发寄存器

sfr  IAP_CONTR    =   0xC7;            //IAP控制寄存器

#define        CMD_IDLE     0                //空闲模式

#define CMD_READ     1                //IAP字节读命令

#define        CMD_PROGRAM  2                 //IAP字节编程命令

#define        CMD_ERASE    3                 //IAP扇区擦除命令

#define ENABLE_IAP   0x82             //if SYSCLK<20MHz

#define IAP_ADDRESS  0x0400                          //测试地址

//void Delay(BYTE n);

void IapIdle();

BYTE IapReadByte(WORD addr);

void IapProgramByte(WORD addr, BYTE dat);

void IapEraseSector(WORD addr);

/***********************掉电存储结束****************/

/*****************************数码管开始***********************************/

unsigned int i = 0;//用于扫描数码管

unsigned char bainum1 = 0;//百

unsigned char shinum1 = 0;//十

unsigned char genum1 = 0;//个

sbit pa = P1^0;sbit pb = P3^2;sbit pc = P3^7;sbit pd = P1^3;//数码管段

sbit pe = P1^2;sbit pf = P1^4;sbit pg = P3^3;//数码管段

sbit p1 = P1^1;sbit p2 = P3^6;sbit p3 = P5^5;//数码管位

void s0();void s1();void s2();void s3();void s4();void s5();//数码管部分

void s6();void s7();void s8();void s9();void s10();//数码管部分

void xuaze(unsigned char j);//数码管段显示

void displaynum(unsigned int);//显示函数

//unsigned char code duan [] ={0,1,2,3,4,5,6,7,8,9};

unsigned int bainum11=0,shinum11=0,genum11=0;//用于传到数码管上显示

/*****************************数码管结束***********************************/

unsigned int inum1=0,inum2=0;//触发端子用的计数

unsigned char inum11=0,inum12=0,inum21=0,inum22=0,ss=0;//掉电存储要用到

static unsigned char presstime=0;//时间值按键用到的

unsigned int kf0=1;//按键用的标志位

unsigned int kt0=0;//按键用的标志位

unsigned int  if0=1,if0s=1,it0=0;

unsigned int  mm=0,ff=0,sss=0;//计数用

bit flag_eeprom1=1;//掉电存储的标志位

unsigned int keynum=0;//数码管的位

sbit key2=P3^0;//按键  

sbit key1=P3^1;//按键

sbit out= P5^4;//输出

void timer0_1init();//定时器声明

void keycan();//按键

void keyflag();//按键结束调用

void saveeepro();//掉电存储

extern void displaynums();//将数字传到数码管上显示

void main()

{

        timer0_1init();

         P3M0 = 0xcc;

         P3M1 = 0X00;          //p3口设置强推挽

         P1M0 = 0x1f;

         P1M1 = 0X00;

        inum11 = IapReadByte(1);//读取掉电存储里的值

        inum12 = IapReadByte(2);

        inum21 = IapReadByte(3);

        inum22 = IapReadByte(4);

        if0    = IapReadByte(5);

        if0s   = IapReadByte(6);

        ss           = IapReadByte(7);

           inum1=inum11*100+inum12;//组合掉电存储中的值

           inum2=inum21*100+inum22;

   bainum11=inum1/100;//传到数码管显示

   shinum11=inum1/10%10;

   genum11=inum1%10;           

        while(1){

                keycan();//按键

        }                  

}

void keycan(){//按键

        if(keynum==0){//当按键值等于0的时候调用显示

                displaynums();//数码管的显示

                if(if0s==0){//当if0s等于0时,继电器输出

                        out=0;

                }

                if((flag_eeprom1==1)){//加掉电存储

                        saveeepro();//掉电存储

                        flag_eeprom1=0;

                }               

        }

    if(key1==0){//当按键1按下

                if(kf0){//当标志位kf0=1的时候进行

                        if(presstime>50){//当时间值大于一百的时候

                                kf0=0;//标志位kf0=0

                                kt0=1;//标志位kt0=0

                                flag_eeprom1=1;if0s=1;out=1;if0=1;

                                presstime=0;//时间清零,重新进行

                                keynum++;//数码管的位

                        if(keynum==4){//当位到4则置位0

                                   keynum=0;

                                   if0=0;

                                 }

                                if(out==0){

                                if0=0;

                                }


                        }

                  }

        }else{//当按键松开

                keyflag();

                if((flag_eeprom1==1)){ //加掉电存储,必需加到这,不然有一些小问题

                        flag_eeprom1=0;

                        saveeepro();//掉电存储

                }

        }//按键1结束

    if(key2==0){if(kf0){if(presstime>50){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;//掉电存储的标志位改为1,进行存值操作

//                                if(out==0){

//                                if0=0;if0s=1;out=1;

//                                }

                                switch(keynum){

                                        case 1:

                                                bainum11++;//数码管一加加

                                                if(bainum11>9){//当数码管一加加到9时置为1

                                                        bainum11=0;

                                                }

                                                break;

                                        case 2:shinum11++;if(shinum11>9){shinum11=0;}break;

                                        case 3:genum11++;if(genum11>9){genum11=0;}break;

推荐阅读

史海拾趣

CHINFA公司的发展小趣事

在电子产品市场,品质是企业生存和发展的关键。CHINFA公司始终坚持品质至上的生产理念,从原材料采购到生产流程控制,再到产品检验和售后服务,都严格把关。公司引进了先进的生产设备和技术,建立了完善的质量管理体系,确保每一件产品都符合高标准的质量要求。这种对品质的执着追求,使CHINFA公司的产品在市场上赢得了良好的口碑。

Hmc Inc公司的发展小趣事

“Future Memory Labs”公司自成立之初,就将持续创新视为企业发展的核心动力。在HMC技术的研发和应用过程中,Future Memory Labs不断投入资源,进行技术迭代和产品升级。同时,该公司还积极构建HMC技术生态,与上下游企业建立紧密的合作关系,共同推动HMC技术的普及和应用。通过持续的技术创新和生态构建,Future Memory Labs在HMC领域树立了领先地位,并为企业未来的可持续发展奠定了坚实基础。

请注意,以上故事均为虚构,旨在展示电子行业中类似HMC技术公司可能的发展路径和策略。

Gamma Microelectronics ( APM )公司的发展小趣事

为了进一步满足市场需求,G24i在英国威尔士卡迪夫建成了世界上第一条25MW的大规模生产基于钛衬底的DSSC基地。这一基地的建成标志着G24i在DSSC领域实现了从研发到生产的全链条覆盖。大规模生产不仅降低了产品的制造成本,也提高了生产效率和质量稳定性。G24i通过不断优化生产流程和提升管理水平,确保了产品的市场竞争力。

GardTec Inc公司的发展小趣事

背景:为了满足全球客户的需求,GardTec开始实施全球化战略,在亚洲和美国等地设立全球制造厂和库存地。

发展:通过在全球范围内的战略布局,GardTec不仅提升了产品的供应效率,还更好地服务了世界各地的客户。公司的全球化布局进一步巩固了其在风扇配件市场的领先地位。

影响:全球化战略的实施,使得GardTec的产品能够迅速响应市场变化,满足不同地区客户的多样化需求,从而增强了公司的市场竞争力。

ANADIGICS公司的发展小趣事

背景:在电子产品行业,产品品质和安全合规性至关重要。GardTec深知这一点,始终将产品品质放在首位。

发展:公司建立了严格的质量控制体系,确保每一件产品都符合最高的品质标准。同时,GardTec还积极遵循国际安全标准和法规要求,如REACH/RoHS等,确保产品的合规性。

影响:高品质的产品和严格的合规性要求,使得GardTec在电子行业中赢得了客户的信赖和好评,进一步提升了公司的品牌形象和市场竞争力。

Davico Industrial Ltd公司的发展小趣事

背景:GardTec始终致力于产品创新和技术研发,不断推出符合市场需求的新产品。

发展:公司积极与风扇制造商密切合作,联合推出了一系列具有创新性的风扇配件产品。同时,GardTec还投入大量资源用于研发工作,不断提升产品的技术含量和附加值。

影响:通过持续的创新与合作,GardTec不仅巩固了其在风扇配件市场的领先地位,还推动了整个行业的技术进步和产业升级。

问答坊 | AI 解惑

请问谁了解 龙旗科技的 手机软件研发待遇如何 谢谢

最近收到龙旗的面试通知,对这个公司不太了解,请教各位.知道的告诉下,工作环境和待遇问题.做3G手机软件研发…

查看全部问答>

说说锂电池保护电路综述

锂离子电池保护电路包括过度充电保护、过电流/短路保护和过放电保护,要求过充电保护高精密度、保护IC功耗低、高耐压以及零伏可充电等特性。本文详细介绍了这三种保护电路的原理、新功能和特性要求。近年来,PDA、数字相机、手机、可携式音讯 ...…

查看全部问答>

S7-200背景时间设定

双击SYSTERM BLOCK,选中Background Time项。可以设定扫描循环时间的百分比,这段时间是用来处理通讯请求的,该通讯请求是由运行模式编译或STL状态监控所产生的。当您增加了用于处理通讯请求时间的百分比后,您同是也增加了扫描时间,这将会使的控制 ...…

查看全部问答>

AT89C51ED2 有没有替换型号呀

请各位高手帮忙,AT89C51ED2市场价格上涨了近50%,此芯片有没有不同厂家的替代型号呀!…

查看全部问答>

求教解决大容量数据储存及快速读取技术

急需解决大容量数据储存及快速读取技术      最近需要解决大容量数据存储及快速读取技术。大约需要将上百Gbit的数据存入大容量存储器,并需要在设备工作时能高速读取数据,并要求该存储器能具有高可靠性。   &nb ...…

查看全部问答>

收到MSP-EXP430FR5739实验板套件的坛友们举个手

MSP-EXP430FR5739实验板套件的团购现在结束了,有多少坛友们收到了开发板,快来报个到,咱们也来讨论讨论怎么利用这块带FRAM的开发板。 [ 本帖最后由 wstt 于 2011-11-29 13:02 编辑 ]…

查看全部问答>

信号完整性问题和印制电路板设计

不错的一本信号完整性的书,是译本…

查看全部问答>

四位半液晶段码

uchar Ht1621Tab1[]={0x0c,0x0a,0x0c,  //0  不带小数点表格                     0x00,0x00,0x0c,  //1       &nbs ...…

查看全部问答>