📄 main.c
字号:
#include <stdio.h>
#include <time.h>
#include <regtsk51a.sfr>
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define ON 1 //1的时候灯亮
#define OFF 0 //0的时候灯灭
/* I/O ports */
//管脚定义
//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒
//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒
//PortDX_Yellow = P1^0; //东西方向黄灯
// PortDX_Red = P1^1; //东西方向红灯
// PortDX_Green = P1^2; //东西方向绿灯
// PortNB_Yellow = P1^3; //南北方向黄灯
// PortNB_Red = P1^4; //南北方向红灯
// PortNB_Green = P1^5; //南北方向绿灯
/* handle the switches */
static void handle_switches(void)
{
uint mode;
if ( P0_0==1)
{
mode = 1;
}
else if ( P0_0==0)
{
mode = 0;
}
}
void wait()
{
uint i;
for (i = 0; i < 65000; ++i)
{
__nop();
__nop();
__nop();
}
}
void yellow()
{
uint i;
P1_1 = ON; P1_0 = OFF; P1_2 = OFF; //南北黄灯亮3秒
P1_6 = ON; P1_5 = OFF; P1_7 = OFF; //东西黄灯亮3秒
wait();
P1_1 = OFF;
P1_0 = OFF;
P1_2 = OFF; //南北黄灯亮3秒
P1_6 = OFF;
P1_5 = OFF;
P1_7 = OFF; //东西黄灯亮3秒
wait();
P1_1 = ON; P1_0 = OFF; P1_2 = OFF; //南北黄灯亮3秒
P1_6 = ON; P1_5 = OFF; P1_7 = OFF; //东西黄灯亮3秒
wait();
P1_1 = ON; P1_0 = OFF; P1_2 = OFF; //南北黄灯亮3秒
P1_6 = ON; P1_5 = OFF; P1_7 = OFF; //东西黄灯亮3秒
wait();
}
void init() //声明中断初始化
{
uint i;
P1_3=0;
P1_4=0;
P1_1 = OFF; P1_0 = ON; P1_2 = OFF; //南北红灯亮28秒
P1_6 = OFF; P1_5 = OFF; P1_7 = ON; //东西绿灯亮28秒
wait() ;
wait() ;
wait();
}
/*==================== 主函数 ====================*/
void main(void)
{
uint mode;
/* initialize all things */
init(); //调用初始化函数
while (1)
{
if (mode==1)
{
yellow();
P1_1 = OFF; P1_0 = OFF; P1_2 = ON; //南北绿灯亮38秒
P1_6 = OFF; P1_5 = ON; P1_7 = OFF; //东西红灯亮38秒
wait();
wait();
handle_switches();
}
else if (mode == 0)
{
yellow();
P1_1 = OFF; P1_0 = ON; P1_2 = OFF; //南北红灯亮28秒
P1_6 = OFF; P1_5 = OFF; P1_7 = ON; //东西绿灯亮28秒
wait();
wait();
wait();
handle_switches();
}
else
{
P1_1 = OFF; P1_0 = ON; P1_2 = OFF; //南北红灯亮28秒
P1_6 = OFF; P1_5 = OFF; P1_7 = ON; //东西绿灯亮28秒
}
handle_switches();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -