c语言 时钟中断的编程问题

Python08

c语言 时钟中断的编程问题,第1张

改成这样试试。

#include<reg52.h>

sbit ge=P3^2

sbit rn=P2^0

sbit ye=P3^1

sbit yn=P2^1

sbit gn=P2^2

sbit re=P3^0

unsigned int i

void delay_1sec(void )

{  

  unsigned int dly

for(i=0i<20i++)

     {  

  dly= 500

while(dly--)

/*  TMOD=0x01

   TH0=0X3C

   TL0=0XB0

   TF0=0

   TR0=1

 while(TF0==0)

  {

  }

   TR0=0

   TF0=0

*/

    }

}

void delay_2sec(void )

{  for(i=0i<2i++)

     {  delay_1sec()

}

}

void delay_4sec(void )

{   for(i=0i<4i++)

      {  delay_1sec()

 }

}

void main(void)

{      ge=0

       rn=0

  ye=0

  yn=0

  gn=0

  re=0

   while(1)

    {  

  ge=~ge

  rn=~rn

  delay_4sec()

  ge=~ge

  ye=~ye

  dealy_1sec()

  ye=~ye

  rn=~rn

  gn=~gn

  re=~re

  delay_2sec()

  gn=~gn

  yn=~yn

  delay_1sec()

}

}

#include<reg52.h>

#define uchar unsigned char

unsigned char n,a

uchar dispa[6]={0,0,9,5,9,1}

unsigned int num=0

void main()

{

uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

uchar code taa[6]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f}

uchar a,i

unsigned int m

n=0

TMOD=0x01//定时器方式选择

TH0=(65536-10000)/256//定时器高位赋值

TL0=(65536-10000)%6//低8位赋值

EA=1//总中断开启

ET0=1//这个记不清了好像是外部中断看看数据手册

TR0=1//定时器0中断

while(1)//主函数大循环,标准要加大括号

for(i=0i<6i )

{

a=dispa[i]

P0=~{table[a]}//P0口显示,

P2=taa[i]//P2口显示

for(m=0m<200m )//消隐延时

}

}

void time0_int(void) interrupt 1//定时器0中断服务函数

{ TH0=(65536-10000)/256//进中断给定时器赋值,先高位后低位,读取时正好相反,否则引起数据错误

TL0=(65536-10000)%6

n

if (n==100)//100个循环为1秒

{

n=0

dispa[0] //这个数组第一个数据为秒的个位

if (dispa[0]>9)

{

dispa[0]=0//满十个位清零十位加一

dispa[1] //秒的十位

if (dispa[1]>5)//满6清零

{

dispa[1]=0

dispa[2] //这一位表示分钟的个位

if (dispa[2]>9)

{

dispa[2]=0

dispa[3] //分钟的10位,

if (dispa[3]>5)

{

dispa[3]=0

dispa[4] //小时的个位

if (dispa[4]>3)//24小时制

{

dispa[4]=0

dispa[5]

if (dispa[5]>2)//小时的十位,24小时制

{

dispa[5]=0

dispa[0]

}

}

}

}

}

}

}

}