#include <stc89.h>
#define uchar unsigned char
#define uint unsigned int
uint tjs;
void init_time()//定時器模式初始化
{
EA=1; //開總中斷
TMOD=0x02;//設定時器0模式2定時 100um
TH0=TL0=155;//置定時器0初值,中斷后,TH0中的值重新裝入TL0,THO中值不變
TR0=0; //啟動定時器0
ET0=1; //允許T0中斷
SCON =0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |=0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |=0x80 ; //SMOD=1;
IE |=0x10; //串行口中斷 (IE |=0x10;)開啟 (IE &=0xEF;)關閉
TH1 =0xf3 ; //晶振=12MHz波特率4800
}
/////////////////////////////////////
void sendchar(uchar ch){
TR1=1; //啟動定時器1
ET1=1; //不允許T1中斷
TI=0;
SBUF=ch;
while (TI==0) P05=0; //為什么會卡在這里?( P05腳的發(fā)光管一直亮!)
TR1= 0 ; ////啟動定時器1
ET1=0; //不允許T1中斷
}
//////////////////////////////
void main(void){
P14=0; //允許LED亮
init_time();//初始化定時器
TR0=1; //啟動定時器T0
while(1){
if(tjs==5000){P01=~P01;tjs=0;}
if(tjs==1000) sendchar(0x39);
} }
void t0_int(void) interrupt 1
{tjs++;}
你這是一個完整的程序?P05、P01、P14定義了嗎?
應該是:TH0=0XFF; TL0=155;
你或者:th0=(65535-100)/256;
tl0=(65535-100)%256;
剛才沒注意,你是用的是模式2。100us初值設165,不是155(0xa5) 。
要設置波特率。
void initUart(void) //波特率9600 晶振11.0592
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xfa;
TL1=0xfa;
TR1=1;
}
你的程序問題太多。
給你改了一下。試過了,可以正常運行。
#include "STC89C5xRC.H"
#define uchar unsigned char
#define uint unsigned int
sbit P05=P0^5;
sbit P14=P1^4;
sbit P01=P0^1;
uint tjs;
void init_time()//定時器模式初始化
{
EA=1; //開總中斷
TMOD=0x02;//設定時器0模式2定時 100um
TH0=0xA5;
TL0=0XA5;//置定時器0初值,中斷后,TH0中的值重新裝入TL0,THO中值不變
TF0 = 0; //清除TF0標志
TR0=0; //啟動定時器0
ET0=1; //允許T0中斷
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
TMOD &= 0x0F; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xF9; //設定定時初值
TH1 = 0xF9; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
}
void sendchar(uchar ch)
{
SBUF=ch;
while(!TI) P05=0;
TI = 0; //為什么會卡在這里?( P05腳的發(fā)光管一直亮!)
P05=1;
}
//////////////////////////////
void main(void){
P14=0; //允許LED亮
init_time();//初始化定時器
TR0=1; //啟動定時器T0
while(1){
if(tjs==5000)
{
P01=~P01;
tjs=0;
}
if(tjs==1000) sendchar(0x39);
} }
void t0_int(void) interrupt 1
{
tjs++;
}
ahshmj 發(fā)表于 2013-4-15 15:18
你的程序問題太多。
ahshmj 發(fā)表于 2013-4-15 15:18
你的程序問題太多。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |