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()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)