标题: 求热心人帮忙用C、定时/计数器编写如下程序 [打印本页]

作者: a123    时间: 2010-8-5 09:00
标题: 求热心人帮忙用C、定时/计数器编写如下程序
 

一,1号按钮按下,1号2号灯亮,延时5秒后,2号灭,3号灯亮,2号按钮按下,1号3号灯灭。

(4个独立按键:P32外中断0      P34定时器0       P36WR        P37RD;P3_3外中断1,P3_5定时器1)




作者: admin    时间: 2010-8-8 20:39
帮你搞定了,在51hei-5板子上运行成功,一号按钮为板子下面的独立按键 INT0键
#include<at89x52.h>
#include<intrins.h>//参数左移头文件
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,numdu,numwe;
sbit dula=P2^6;//定义dula
sbit wela=P2^7;//定义wela
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//数给的格试uchar code table[]={}在{}中要写入数据
uchar code tablewe[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

void main()
{
 numdu=0;
 numwe=0;
 aa=0;
 
 TMOD=0x01;//对TMOD付值也可写:TMOD=1;
 TH0=(65536-50000)/256;//THO初值,"/"为求莫,(65536-50000)/256放到高8位中
 TL0=(65536-50000)%256;//HO初值,"*"为求余,(65536-50000)%256放到低8位中
 EA=1;//开总中断
 ET0=1;//开定时器中断
 TR0=1;//启动定时器
/*定时器/计数器设置流程
1对TMOD赋值,以确定T0及T1的工作方式;
2计算初值,并将其值写入TH0,TL0或TH1,TL1中;
3中断方式时,则对IE赋值,开放中断;
4致TR0或TR1置位,启动定时/计数器定时或计数
*/
while(1)
{

if(P3_2==0)
  {
  P1_4=0;
  P0_0=0;
  P0_1=0;
  }

 if(aa==100)  
 {
  aa=0;    
  P0_1=1;
  P0_2=0;
  }


if(P3_4==0)
  {
  P1_4=0;
  P0_0=1;
  P0_2=1;
  }
 
 }
}
void timer0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 aa++;
}

作者: a123    时间: 2010-8-10 22:48
版主辛苦了,谢谢您!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1