STC8G1k08a芯片
#include <intrins.h>
#include <STC8G.H> //"STC15F104E.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long int
#define SET_DS_INPUT P3M1 = 0xFF,P3M0 = 0x00; //P3.2 0,0为准双向 1,0为高阻入
#define SET_DS_OUTPUT P3M1 = 0x00,P3M0 = 0xFF; //P3.2 F,F开漏输出 0,1推挽
#define DS_PIN P32
**************
void InitSys(void)
{
EA = 0; // 屏蔽所有中断
WDT_CONTR = 0x00; //禁用看门狗
SET_DS_INPUT;
P3PU = 0xFF; //内部上拉电阻有效
P3SR = 0x00; //0快速,1慢速
IT0 = 1; //下降沿触发
EX0 = 1; //使能中断
step = 0;
}
****************
u8 DS_Reset()
{
u8 rbit1 = 0;
u8 rbit2 = 0;
cnt = 0;
EA = 0;
IE0 = 0;
SET_DS_INPUT;
while(1) //判断复位拉低
{
***************
u8 DS_ReadBit()
{
u8 rbit = 0;
SET_DS_INPUT;
EA = 1; //全局中断使能。
IE0 = 0 ; //中断标志位清零
while(IE0 == 0); //等待中断
IE0 = 0 ; //清中断标志
EA = 0; //关中断
Delay3us(); //
Delay20us();
if(1 == DS_PIN_READ)
{
rbit = 1;
}
else
******************
本来应该是执行完 DS_Reset() 后,才执行 DS_ReadBit() 的。但实际上uv4仿真时,当启动调试第一次执行完 DS_Reset() 后,运行到红色发生中断时,却不是往下走而是跳到蓝字重走DS_Reset() 去了;如果接着往下走,才会正常运行;怎么会这样? |