|
代碼如下 :
#include <STC15.H>
#include <intrins.H>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar time ,temp,temp1=0;
//int SS=0,MS=0;
//int time=2;
//int m=0,n=0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)字編碼 0.1.2.3.4....9
uchar yi,er,san,si;
uint num;
uchar data_L, data_H;
uchar data_0, b;
uchar flag=0;
sbit P0_0=P0^0;
sbit k3 = P3^2;
sbit k4 = P3^3;
/********************************************************************
* 名稱 : Delay()
* 功能 : 延時(shí)
* 輸入 : i
* 輸出 : 無
***********************************************************************/
void delay(uchar i) //延時(shí)函數(shù)
{
uint j,k;
for(j=i;j>0;j--)
for(k=500;k>0;k--);
}
/********************************************************************
* 名稱 : display()
* 功能 : 數(shù)碼管顯示函數(shù)
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
/*********************************************************************
串口初始化
*************************************************************/
void UART_init(void)
{
//?????????1
TMOD = 0x20; // 0010 0000 ???1?????2(8???????)
TH1 = 0xFD; // ???:9600 /11.0592MHZ
TL1 = 0xFD; // ???:9600 /11.0592MHZ
TR1 = 1;
//?????????
AUXR = 0x00; // ???,?????1????????,S1ST2=0
SCON = 0x50; // 8位數(shù)據(jù),可變波特率
TI=1; // ???,??printf?????????
}
void display(uchar yi,uchar er,uchar san,uchar si) //顯示函數(shù)
{
P2=table[yi];
P41 = 0;
delay(5);
P41 = 1;
P2=table[er];
P42 = 0;
delay(5);
P42 = 1;
P2=table[san];
P44 = 0;
delay(5);
P44 = 1;
P2=table[si];
P45 = 0;
delay(5);
P45 = 1;
}
void printf_String(void)
{ //int a=0;int b=0;int c=0;int d=0;
char strTempA[5];
char strTempB[5];
char strTempC[5];
char strTempD[5];
//int b;
sprintf(strTempA,"%d",temp1);/*;sprintf(strTempB,"%d",b);sprintf(strTempC,"%d",c);sprintf(strTempD,"%d",d);*/
//char buf = a;
// char *p = buf;
printf ("開始時(shí)間:%s \n",strTempA/*,strTempB,strTempC,strTempD*/);
//SBUF=0x88;
//??:String Test String is at address i:0022
}
/********************************************************************
* 名稱 : main()
* 功能 : 主函數(shù)
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void main(void)
{
P0M0=0X00;P0M1=0X00; //端口模式
delay(5);
P1M0=0X00;P1M1=0X00;
delay(5);
P2M0=0X00;P2M1=0X00;
P3M0=0X00;P3M1=0X00;
P4M0=0X00;P4M1=0X00;
//TMOD=0x01;
TH0=0x0D8;
TL0=0x0F0;
IT0=1; // ????????
EX0=1; // ?????0
// ????
IT1=1;//???????(???)
EX1=1;//??INT0?????
EA=1;
ET0=1;
TI=1;
//TR0=1;
while(1)
{
display(yi,er,temp1,temp);
}
/********外中斷0***************/
}
void init1(void) interrupt 0
{ UART_init();
if(k3==0){
TR0=1;
printf_String() ;
}
/**************外中斷1*******/
}
void init2(void) interrupt 2
{
if(k4==0){
TR0=0;
}
}
/***********************
定時(shí)器T0中斷
*************************/
void TIME0(void) interrupt 1
{
//TH0=0xee;
//TL0=0x00; TH0=(65535-5100)/256;// ?? 5 ??????
TH0 = 0x0D8;
TL0 = 0x0F0;//??10ms
time++;
if(time==50)//0.5??
{
time=0;
temp++;
if(temp==10)
{
temp=0;
temp1=temp1+1;
}
}
}
想請(qǐng)教一下為什么會(huì)出現(xiàn)這種情況呀,不是應(yīng)該顯示 1 的嗎?為什么會(huì)顯示256?另外還想請(qǐng)教一下有沒有簡(jiǎn)單的方法讓數(shù)碼管上的數(shù)字顯示到串口助手上面?
|
|