标题:
这个单片机程序逻辑有问题吗?好奇怪
[打印本页]
作者:
三极管一样的人
时间:
2022-12-6 12:11
标题:
这个单片机程序逻辑有问题吗?好奇怪
/////上述这个,Flag = 2 的时候,close 只能执行5次,就回到 flag =1 那里去了
单片机源程序如下:
#include <xc.h>
/* Private define-------------------------------------------------------------*/
#define JDQ_Switch RD0
unsigned char Flag;
unsigned int Open;
unsigned int Close;
/* Private function prototypes------------------------------------------------*/
/*
* @name GPIO_Init
* @brief 输入输出端口初始化
* @param None
* @retval None
*/
static void GPIO_Init()
{
//RD0-控制三极管
//TRISDbits.TRISD0 = 0; // TRISd方向寄存器 ,RA0口设置为 输出;
//PORTDbits.RD0 = 1; // RA5设置为 高电平,关闭光耦
//TRISDbits.TRISD1 = 0; // TRISd方向寄存器 ,RA1口设置为 输出;
// PORTDbits.RD1 = 0; // RA5设置为 低电平,打开光耦
TRISD = 0x00; // TRISD方向寄存器 ,RC5口设置为 输出;
PORTD = 0x00; // RD0~RD7 设置为 高电平,关闭LED
}
/*
* @name Delay_ms
* @brief 1毫秒延时函数
* @param ms -> 对应需要延时的时间
* @retval None
*/
static void Delay_10ms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<990;j++);
}
void main(void)
{
GPIO_Init();
//Fosc_Init();
//Timer0_Init();
//IE_Init();
Flag = 1;
while(1)
{
Flag = 1;
switch(Flag)
{
case1:
for(Open = 0; Open <10; Open++)
{
RD2 = 0;
Delay_10ms(10);
RD2 = 1;
Delay_10ms(10);
}
RD0 = 0;
Flag = 2;
break;
case2:
for(Close = 0; Close <10; Close++)
{
RD4 = 0;
Delay_10ms(10);
RD4 = 1;
Delay_10ms(10);
}
RD0 = 1;
Flag = 1;
break;
}
}
}
////////////上述这个,烧录后没反应、、、
void main(void)
{
GPIO_Init();
//Fosc_Init();
//Timer0_Init();
//IE_Init();
Flag = 1;
while(1)
{
if(Flag == 1)
{
for(Open = 0; Open <10; Open++)
{
RD2 = 0;
Delay_10ms(10);
RD2 = 1;
Delay_10ms(10);
}
Flag = 2;
RD0 = 0;
}
if(Flag == 2)
{
for(Close = 0; Close <10; Close++)
{
RD4 = 0;
Delay_10ms(10);
RD4 = 1;
Delay_10ms(10);
}
Flag = 1;
RD0 = 1;
}
}
}
作者:
yzwzfyz
时间:
2022-12-7 15:39
不服,自己写一个看看。成了不就好了吗?
作者:
Longan.Wang
时间:
2022-12-7 17:32
感觉你用的是PIC,如果是的话,必须写配置位。如果没有写配置位有可能系统时钟都没有,怎么可能有反应呢。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1