1.当要想从标志位中退出来就一定要知道程序当前在哪个标志位中读取,然后就是在这个里面设定退出方可,否则是不能使用的,相当于是没有一样。
单片机源程序如下:
/*************************************************************************************
密码锁,可以改个人密码和管理员密码的一个基于单片机的锁。
按键值码:1 2 3 set
输入密码只能按0~9,10位确定键,11位取消键(输入密码小
4 5 6 ↑ 于8时取消输入的密码),12是时钟功能键,13是时钟“+”,
7 8 9 ↓ 14是时钟“-”,15改密码的时候的确定键
ok 0 c fun
**************************************************************************************/
/******************************头文件****************************************/
#include
#include
#include
#include"lcd.h"
#include"ds1302.h"
#include"keyboard.h"
#include"delay.h"
#include"deal.h"
#include "i2c.h"
#include "uart.h"
/*************************宏定义*************************************/
#define uchar unsigned char
#define uint unsigned int
//========================IO口定义==================================//
sbit s = P2^2; //控制背光
sbit k2 = P3^2; //
sbit JDQ_key = P3^7; //继电器控制
unsigned char flag4,flag5=0,flag8=1,flag1=0,flag_time=0,
flag_time2=0;flag3=0;
unsigned char wrongtimes=0,k,p=1,miao=59,t=0,snum=0,
c=0,up=0,down=0,a=0;
//===========================密码的初始值==========================//
unsigned char MIMAword[8]={1,2,3,4,5,6,7,8}; //密码的初始值
unsigned char G_MIMA[8]={8,8,8,8,8,8,8,8}; //管理员密码,可以更改
void MIMA_input(); //EEPROM写
void MIMA_output(); //EEPROM读
//===========================配置定时器============================//
void init_conf()
{
TH0=(65536-50000)/256; //
TL0=(65536-50000)%256;
EA=1;
ET0=1;
IT0=1; //跳变沿出发方式(下降沿)
EX0=1; //打开INT0的中断允许。
TR1 = 1;
ET1 = 1;
}
//===============================主函数===========================//
void main()
{
unsigned char num,i = 0,j;
unsigned char temp[8];
unsigned char Ztemp[8]={'1','2','3','4','5','6','7','8'};
unsigned char Zresponsuccess[4]={0x55,0x11,0x01,0x00};
unsigned char Zresponfail[]="your command is wrong";
unsigned char ch[8]={0},z1=0, Znum[8]={0};
bit Flag;
/***********************以下是断电后重启的读出EEPROM的数据*******************************/
//第一次上电先隐去 88888888修改管理员密码 然后取隐用修改后的管理员进入修改个人密码
G_MIMA[0] = EEPROMread_add(11,19);
delay(20);
G_MIMA[1] = EEPROMread_add(12,20);
delay(20);
G_MIMA[2] = EEPROMread_add(13,21);
delay(20);
G_MIMA[3] = EEPROMread_add(14,22);
delay(20);
G_MIMA[4] = EEPROMread_add(15,23);
delay(20);
G_MIMA[5] = EEPROMread_add(16,24);
delay(20);
G_MIMA[6] = EEPROMread_add(17,25);
delay(20);
G_MIMA[7] = EEPROMread_add(18,26);
delay(20);
/***********************以上是断电重启后读出EEPROM里面的数据*********************************/
s=0; //背光控制,上电时低电平将三极管导通
JDQ_key=1; //继电器驱动装置,低电平(三极管不导通,则继电器工作,则锁关
//换为J3Y后更改电平
init_conf(); //配置定时器
LCD12864_Init(); //12864初始化
Ds1302Init(); //1302初始化
UartInit(); //串口初始化
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』