英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
电子表一块(含源程序)转
[打印本页]
作者:
star
时间:
2012-8-21 16:55
标题:
电子表一块(含源程序)转
//******************************************************
//实验目的:利用TMR0中断产生秒时钟,数码管显示六位时间
//单片机:PIC16F883
//晶振:4MHZ
//PORTA输出位码,PORTC输出段码,三个按键调整时间
//******************************************************
#include <pic.h>
#include "Def.h"
#include "Time.h"
/************************************************************
** 函 数 名: main
** 功能描述: 程序主函数
*************************************************************/
main()
{
Bz=0;
InitPort();
second=0;
minite=0;
hour=0;
LL.A=0;
TMR0=0; //开启TMR0中断
LL.B.L=TMR0;
tcnt=0;
SOUND=0;
m=0;
while(1)
{
Flag.A=0;
LL.B.L=TMR0;
KEY_ASSAY(); //调时间
ShowZ();
tcnt++;
if(tcnt==6)tcnt=0;
if(LL.A>=62500)
{
TMR0=0;
LL.B.L=TMR0;
LL.A=0;
if(Hou==12)Music12(); //12小时制报时
if(Hou==24)Music24(); //24小时制报时
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(Hou==24) //24小时制
{
if(hour==24)hour=0;
}
if(Hou==12) //12小时制
{
if(hour==12&&Bz==1)
{
hour=0;
Bz=0;
}
if(hour==13&&Bz==0)
{
hour=1;
Bz=1;
}
}
}
}
}
dispbuf[5]=second%10;
dispbuf[4]=second/10;
dispbuf[3]=minite%10;
dispbuf[2]=minite/10;
dispbuf[1]=hour%10;
if(Hou==24) //24小时制
{
dispbuf[0]=hour/10;
}
if(Hou==12) //12小时制
{
if(Bz==0)
if(hour<10)
{
dispbuf[0]=10;
}
else
{
dispbuf[0]=11;
}
if(Bz==1)
if(hour<10)
{
dispbuf[0]=12;
}
else
{
dispbuf[0]=13;
}
}
}
}
/************************************************************
** 函数名称: IntTm(void)
** 功能描述: 中断函数
*************************************************************/
void interrupt IntTm(void)
{
if(T0IF==1)
{
LL.B.H+=1; T0IF=0;
}
}
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2