c语言5s的延时程序,关于C程序的问题,求助大神! 我做了一个简单地交通灯程序,进行单片机仿真。红灯绿灯30s,黄灯5s,但是仿真之中绿灯延时只有25s,而且仿真一分钟后会多个灯同时亮。求大神指导!本...

#include

#define uchar unsigned char

#define uint unsigned int

#define time 50000

#define on 0

#define off 1

sbit RED_ZHU = P0^0; //南北 红灯

sbit YELLOW_ZHU = P0^1;//南北 黄灯

sbit GREEN_ZHU = P0^2; //南北 绿灯

sbit RED_ZHI = P0^3; //东西 红灯

sbit YELLOW_ZHI = P0^4; //东西 黄灯

sbit GREEN_ZHI = P0^5; //东西 绿灯

sbit P23 = P3^4;

sbit P22 = P3^5; //东西方向数码管位选

sbit P21 = P3^6;

sbit P20 = P3^7; //南北方向数码管位选

sbit int0_key = P3^2;

sbit int1_key = P3^3;

void display1(uchar,uchar);

void display2(uchar,uchar);

void delayms(uint k);

uchar temp1,temp2,temp3,temp4,temp5,temp6;

/*===============倒计时=========================*/

uchar N = 30,Y = 25,Z = 30,M = 55,G = 60,U =60;

uchar C50ms,t0;

uchar seg = 1;

uchar flag=0,led_data_temp;

void InitialT1(void)

{

TMOD = 0x11; //定时器0,1工作在方式1

TH1 = (65536 - time)/256; //相当于(65536-time)/256;

TL1 = (65536 - time)%256;//初值为time(50ms)

TR1 = 1;//开定时器1中断

ET1 = 1;//允许定时器1中断

ET0 = 1;

TH0 = (65536 - time)/256;

TL0 = (65536 - time)%256;

EX0 = 1; //允许外部中断0

IE0 = 1;//启动外部中断0

PX0 = 1;

EX1=1;

IE1=1;

EA = 1; //开总中断

}

void  int0(void) interrupt 0//外中断0

{

flag = 0;

led_data_temp = P0;

t0 = 20;

if(!int0_key)

{

delayms(10);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值