- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-03-17 09:16:42
已绑定手机
新手上路
- 积分
- 31
|
8H1K17 RST 设置为普通IO 在while 前不能正常控制 IO电平翻转。 while 循环中,可以控制。代码如下:
void GIPO_Config(void)
{
BUZZ = 1;
Relay = 0;
P1M0 = 0xc0; P1M1 = 0x00;
P1PU = 0xc0;
// P1M0 = 0xe4; P1M1 = 0x00;
// P1PU = 0xe4;
P3M0 = 0x70; P3M1 = 0x00;
P3PU = 0x00;
P5M0 = 0x10; P5M1 = 0xef;
P5PU = 0x00;
}
void Timer0_init(void)
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
// TL0 = 0xCD; //设置定时初始值 1ms
// TH0 = 0xD4; //设置定时初始值
TL0 = 0x9A; //设置定时初始值 2ms
TH0 = 0xA9; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器中断
// EA = 1;
}
void System_init(void)
{
GIPO_Config();
RC52X_Init();
RC52X_Reset();
Timer0_init();
// INT1_Init();
#ifdef Dubeg
UartInit();
#endif
// INT2_Init();
#ifndef Dubeg
WDT_CONTR = 0x24; //使能看门狗,溢出时间约为1s
#endif
EA = 1;
}
unsigned char IapRead(unsigned int addr)
{
unsigned char dat;
IAP_CONTR = 0x80; //使能IAP
IAP_TPS = 12; //设置等待参数11.0592MHz
IAP_CMD = 1; //设置IAP读命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
F0 = EA;
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();
EA = F0;
dat = IAP_DATA; //读IAP数据
IapIdle(); //关闭IAP功能
return dat;
}
u8 Read_EquipmentAddr(u8 * tempValue)
{
//u8 tempValue[4];
tempValue[0] = IapRead( UserID_address + 0);
tempValue[1] = IapRead( UserID_address + 1);
tempValue[2] = IapRead( UserID_address + 2);
tempValue[3] = IapRead( UserID_address + 3);
return 0;
}
void main(void)
{
//u8 temp[4];
System_init();
Read_EquipmentAddr(UserID);
SetUserID_state = 0;
//#ifndef Dubeg
// WDT_CONTR = 0x34; //清看门狗,否则系统复位
//#endif
//Uart2SendStr("Uart Test !\r\n");
#ifdef Dubeg
Uart2SendStr(UserID,4);
#endif
BUZZ = 0;
delay_ms(200);
BUZZ = 1;
delay_ms(500);
BUZZ = 0;
delay_ms(200);
BUZZ = 1;
#ifndef Dubeg
WDT_CONTR = 0x34; //清看门狗,否则系统复位
#endif
while (1)
{
Comm_Event_Proc();
if(BUZZ_state == 1)
{
BUZZ = 0;
delay_ms(250);
BUZZ = 1;
delay_ms(500);
#ifndef Dubeg
WDT_CONTR = 0x34; //清看门狗,否则系统复位
#endif
BUZZ = 0;
delay_ms(250);
BUZZ = 1;
delay_ms(500);
#ifndef Dubeg
WDT_CONTR = 0x34; //清看门狗,否则系统复位
#endif
BUZZ = 0;
delay_ms(250);
BUZZ = 1;
BUZZ_state = 0;
#ifndef Dubeg
WDT_CONTR = 0x34; //清看门狗,否则系统复位
#endif
}
}
}
|
|