历史上的今天
今天是:2024年11月25日(星期一)
2020年11月25日 | 时间继电器 倒计时控制 定时通断开关模块程序包
2020-11-25 来源:51hei
#include #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;
史海拾趣
|
锂离子电池保护电路包括过度充电保护、过电流/短路保护和过放电保护,要求过充电保护高精密度、保护IC功耗低、高耐压以及零伏可充电等特性。本文详细介绍了这三种保护电路的原理、新功能和特性要求。近年来,PDA、数字相机、手机、可携式音讯 ...… 查看全部问答> |
|
双击SYSTERM BLOCK,选中Background Time项。可以设定扫描循环时间的百分比,这段时间是用来处理通讯请求的,该通讯请求是由运行模式编译或STL状态监控所产生的。当您增加了用于处理通讯请求时间的百分比后,您同是也增加了扫描时间,这将会使的控制 ...… 查看全部问答> |
|
急需解决大容量数据储存及快速读取技术 最近需要解决大容量数据存储及快速读取技术。大约需要将上百Gbit的数据存入大容量存储器,并需要在设备工作时能高速读取数据,并要求该存储器能具有高可靠性。 &nb ...… 查看全部问答> |
|
收到MSP-EXP430FR5739实验板套件的坛友们举个手 MSP-EXP430FR5739实验板套件的团购现在结束了,有多少坛友们收到了开发板,快来报个到,咱们也来讨论讨论怎么利用这块带FRAM的开发板。 [ 本帖最后由 wstt 于 2011-11-29 13:02 编辑 ]… 查看全部问答> |




