大家帮我看个PIC的LED闪烁程序

大家帮我看个PIC的LED闪烁程序,第1张

小哥,问题表达清楚,是要A端口的某一个LED闪烁还是所有A端口LED闪烁;

TRISA=0X07表明RA0,RA1,RA2是作为输入功能的,当然不能作为输出去控制LED;

另外,想对A端口的某一位 *** 作,可定义成TRISAbits.TRISA3,就是你理解的TRISA3

其他的如LATAbits.LATA3、PORTAbits.RA3

//-----------------------------------------------------------------

// 名称: LED模拟交通灯

//-----------------------------------------------------------------

// 说明: 东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯,

//红灯亮后,南北向由红灯变为绿灯,2秒后南北向黄灯闪烁,

//闪烁5次后亮红灯,东西向绿灯亮,如此往复.

//本例将切换时间设得较短,以便快速观察运行效果.

//

//-----------------------------------------------------------------

#include <pic.h>

#define INT8U unsigned char

#define _XTAL_FREQ 1000000UL

#define RED_EW_ON() RC0 = 0 //东西向指示灯

#define YELLOW_EW_ON() RC1 = 0

#define GREEN_EW_ON() RC2 = 0

#define RED_EW_OFF() RC0 = 1 //东西向指示灯关

#define YELLOW_EW_OFF() RC1 = 1

#define GREEN_EW_OFF() RC2 = 1

#define RED_SN_ON() RC3 = 0 //南北向指示灯开

#define YELLOW_SN_ON() RC4 = 0

#define GREEN_SN_ON() RC5 = 0

#define RED_SN_OFF() RC3 = 1 //南北向指示灯关

#define YELLOW_SN_OFF() RC4 = 1

#define GREEN_SN_OFF() RC5 = 1

#define YELLOW_EW_BLINK() RC1 = ~RC1 //东西向黄灯闪烁

#define YELLOW_SN_BLINK() RC4 = ~RC4 //南北向黄灯闪烁

//闪烁次数, *** 作类型变量

INT8U Flash_Count = 0, Operation_Type = 1

//-----------------------------------------------------------------

// 延时函数

//-----------------------------------------------------------------

void DelayX100ms(INT8U n)

{

while (n--) __delay_ms(100)

}

//-----------------------------------------------------------------

// 交通灯切换子程序

//-----------------------------------------------------------------

void Traffic_Light()

{int i

switch (1 )

{

case 1: //东西向绿灯与南北向红灯亮

RC2 = 0

GREEN_SN_OFF()

RED_SN_ON()

RED_EW_OFF()

DelayX100ms(20)

case 2: //东西向黄灯开始闪烁,绿灯关闭

YELLOW_EW_OFF()

GREEN_EW_OFF()

for(i=0i<5i++)

{

YELLOW_EW_BLINK()

DelayX100ms(10)

}

YELLOW_EW_OFF()

case 3: //东西向红灯与南北向绿灯亮

RED_EW_ON()

RED_SN_OFF()

GREEN_SN_ON()

DelayX100ms(20)

case 4: //南北向黄灯开始闪烁

GREEN_SN_OFF()

YELLOW_SN_OFF()

for(i=0i<5i++)

{

YELLOW_SN_BLINK()

DelayX100ms(10)

}

YELLOW_SN_OFF()

}

}

//-----------------------------------------------------------------

// 主程序

//-----------------------------------------------------------------

void main()

{TRISC=0

YELLOW_EW_OFF()

YELLOW_SN_OFF()

RED_EW_OFF()

GREEN_EW_OFF()

YELLOW_SN_OFF()

GREEN_SN_OFF()

while(1)

//Traffic_Light()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11946492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存