clock.c

来自「一个本人编写的时钟程序」· C语言 代码 · 共 85 行

C
85
字号
#include<C:\Keil\C51\INC\Intel\reg51F.h>
			 
  sbit  led1=P1^3;  /* 4位数码管选通引脚 */
  sbit  led2=P1^4;	  
  sbit  led3=P1^6;
  sbit  led4=P1^7;
  sbit  led2dz=P1^5;  /*小数点 */

  sbit  ls164_ab=P3^0; /*74LS164数据线 */
  sbit  ls164_clk=P3^1; /*74LS164时钟线 */

  sbit  key1=P3^5; /*按键1   */
  sbit  key2=P3^7; /*按键2   */

  /*DISPFLAG   EQU  40H /*  /*显示标识  */

  sbit  key1flag=P3^2;
  sbit  key2flag=P3^3;

  /* DISPBUF   EQU  20H
     DISPBUF1  EQU  50H */ /*定时缓冲	 */

  sbit  beep=P1^0;

  /* MSCNT  EQU  30H */   /*中断次数  */

/*  
  SECONDBUF  EQU 31H
  MINUTEBUF  EQU 32H
  HOURBUF    EQU 33H
  MONTHBUF   EQU 34H
  DAYBUF     EQU 35H
  MINUTEBUF1 EQU 36H
  HOURBUF1   EQU 37H  */

static const char sag_led1[10]=
{0x50,0xF9,0x34,0xB0,0x99,0x92,0x12,0xF8,0x10,0x90}; 

static const char sag_led234[10]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

/* 延时 */
void delay (unsigned int val)
{ while (val!=0) val--;  
}	
			  
/* 74ls164工作原理子程序 */		
void Send74ls164(char sag)
{ 
  char i;
  for(i=1;i<9;i++)
  {
   sag=sag<<1 ;
  if(CY==1)
   ls164_ab=1;
  else 
   ls164_ab=0;
  ls164_clk=1;
  ls164_clk=0 ;	
  }
}
void disp(void)
{									   
    led3=1;
   	led1=0;
  	
   Send74ls164(sag_led1[1]);
   delay(4800);

   led1=1;
   led3=0;
   
   Send74ls164(sag_led234[9]); 
   delay(4800);
}
void main(void)
{	 
   
  loop: 
      disp();
 	  goto loop;
 	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?