请大家帮我用c语言写一个小程序

如题所述

第1个回答  推荐于2017-09-20
抽空帮你写的,你试试能不能达到你的要求
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define change_time 30 // 状态转换时间
sbit int0 = P3^2 ; //外部中断0
sbit ns_redled = P1^0 ; //南北红灯 假设 低电平打开对应LED灯
sbit ns_greled = P1^1 ; //绿灯
sbit ew_redled = P1^2 ; //东西红灯
sbit ew_greled = P1^3 ; //绿灯
uchar led_time; //存放灯光转换的时间
uchar ledstatus ;
void delayms(uint delay) //毫秒级延时
{
uchar number;
while(delay--)
{
for(number=0;number<100;number++) ;
}
}
void delays() //秒延时
{
delayms(1000) ;
}
void exint0() interrupt 0 //int0中断处理
{
EA = 0 ; //关闭总中断
ledstatus = P1 ; //保存P1口状态
int0 = 1 ;
while(!int0)
{
ns_greled = ew_greled = 1 ;//关闭绿灯
ns_redled = ew_redled = 0 ;//打开红灯
}
P1 = ledstatus ; //恢复P1口状态
EA = 1 ; //允许中断
}
void reset()
{
delayms(500) ; //上电长延时
P1 = 0xff ; //关闭输出
IT0 = 1; //设置外中断0为下降沿触发
EX0 = 1; //开外中断0
EA = 1 ; //开总中断
}
void main()
{
reset() ; //上电初始化
while(1)
{
for(led_time=0;led_time<change_time;led_time++)
{
ns_redled = ew_greled = 1 ; //
ns_greled = ew_redled = 0 ; //南北绿灯打开 东西红灯打开
delays() ; //秒延时
}
for(led_time=0;led_time<change_time;led_time++)
{
ns_redled = ew_greled = 0 ; // 南北红灯打开 东西绿灯打开
ns_greled = ew_redled = 1 ; //
delays() ; //秒延时
}
}
}追问

太谢谢了

本回答被提问者采纳
第2个回答  2015-11-03
这是单片机语言
第3个回答  2015-11-03
写写写!但是感觉!
相似回答