?? chengxu.c
字號(hào):
/********************************************************************
匯誠(chéng)科技
網(wǎng)址:http://www.ourhc.cn
產(chǎn)品有售淘寶店:http://shop36330473.taobao.com
*********************************************************************/
#include <iom8v.h>
#define uchar unsigned char
#define uint unsigned int
uchar duan[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //所需的段的位碼
//uchar wei[4]={0XFE,0XFD,0XFB,0XF7}; //位的控制端 (開發(fā)板)
uchar wei[4]={0X08,0X04,0X02,0X01}; //位的控制端 (仿真)
uint z,x,c,v, date; //定義數(shù)據(jù)類型
uchar CNT=0;//計(jì)數(shù)初值
uint lck=0;
uint Load;
/******************************************************************
延時(shí)函數(shù)
******************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
/**********************************************************************
數(shù)碼管動(dòng)態(tài)掃描
*********************************************************************/
void xianshi()
{
/*****************數(shù)據(jù)轉(zhuǎn)換*****************************/
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求個(gè)位
PORTC=wei[0];
PORTB=duan[z];
delay(50);
PORTC=wei[1];
PORTB=duan[x];
delay(50);
PORTC=wei[2];
PORTB=duan[c];
delay(50);
PORTC=wei[3];
PORTB=duan[v];
delay(50);
}
//////////////////////////////初始化////////////////////////////////////
void Init_IO(void)//初始化I/O
{
//設(shè)置B口為輸入
DDRB=0xFF;
PORTB=0xFF;
//設(shè)置C口為輸出
DDRC=0xFF;
PORTC=0xFF;
//設(shè)置D口為輸出
DDRD=0X00;
PORTD=0x00;
}
/////////////////////////////主函數(shù)/////////////////////////////////////
void main(void)
{
Init_IO(); //初始化I/O
PORTC=0XFF; //點(diǎn)亮數(shù)碼管
PORTB=0X00; //點(diǎn)亮數(shù)碼管
delay(30);//延時(shí)
PORTB=0xff; //關(guān)閉數(shù)碼管
TCCR0=0x02; //T/C0工作方式選擇,8分頻
//TCNT0=0x00; //計(jì)數(shù)初始值9c
TCCR1B=0x07; //T/C0工作方式選擇,上升沿觸發(fā)
TCNT1H=0X00;
TCNT1L=0X00;
TIMSK=0x01; //使能T0溢出中斷
SREG=0x80; //使能全局中斷
while(1)
{
date=Load; //計(jì)數(shù)值
//date=1234; //計(jì)數(shù)值
xianshi(); //動(dòng)態(tài)掃秒顯示
}
}
//////////////////////////T/CO中斷服務(wù)函數(shù)//////////////////////////////////////////
#pragma interrupt_handler Timer0:10
void Timer0(void)
{
TCNT0=0xa0; //計(jì)數(shù)初始值
lck++;
if(lck==1000)
{
Load=TCNT1;//H+TCNT1L;//求出計(jì)數(shù)值
lck=0;
TCNT1=0X00;
//TCNT1L=0X00;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -