求助:哪位大哥能解决这个串口问题啊?谢谢!马上送分
[复制链接]
//-------------------------------------头文件--------------------------------------
#include
#include
#include
//-------------------------------------头文件--------------------------------------
//********定义引脚*************************************
sbit P33 = P3^3; //喂狗
sbit P23 = P2^3; //使 U7(74HC574) 使能
sbit D7 = P0^7; //使 MAX485 的 830 输入为1
//********定义引脚*************************************
//**************定义变量*************************************************
int WDogZdJs; //喂狗中断计数
//**************定义变量*************************************************
void delay()
{
int i,j;
for(i=0;i<100;i++) { for(j=0;j<10;j++) { ; } } } void Sendtex() //向电脑发送字符 '1' { SBUF='1'; while(!TI); TI=0; } void timer0(void) interrupt 1 //喂狗中断程序 { TH0 = (65536-5000)/256; //重载计数初值 每 5 ms 中断一次 TL0 = (65536-5000)%256; //这是手动装置,如果 T0 为模式 1 的话,必须要手动装入 //如果如果 T0 为模式 2 的话,只要初始化了, //则在这里可以不要 TH0 = (65536-5000)/256; TL0 = (65536-5000)%256; WDogZdJs ++; if ( WDogZdJs >= 10 )
{
P33 =! P33; //不停喂狗
WDogZdJs = 0;
}
}
void main()
{
int i;
delay();
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
P33 =! P33;
EA = 1 ; //允许中断
ET0 = 1; //T/C0 开中断(定时器0/计数器0)
ET1 = 0; //T/C0 开中断(定时器0/计数器0)
TMOD=0x21; //定时器1模式1 定时器0模式1
//---------------------------处理串口中断---------------------------------------
ES = 1 ; //允许串行中断
SCON=0x50; //串行口工作方式1, 10 位异步收发,波特率由定时器控制
PCON |= 0x00;
TL1=0xFA;
TH1=0xFA; //22.1184M晶振 波特率9600
TR1=1; //启动定时器1/计数器1
//---------------------------处理串口中断---------------------------------------
//------------------------------处理中断喂狗------------------------------------
TH0 = (65536-1000)/256; //预置计数初值,每 5 ms 中断一次
TL0 = (65536-1000)%256;
TR0 = 1; //启动定时器0/计数器0
//------------------------------处理中断喂狗------------------------------------
//-----------------------------使 MAX485 的 830 为1 ----------------------------
P23 = 0;
for (i=0; i<50; i++) { _nop_(); } D7 = 0; //D7 输出 0 ,因为用了反向器所以输出为 1 for (i=0; i<50; i++) { _nop_(); } P23 = 1; //-----------------------------使 MAX485 的 830 为1 ---------------------------- while(1) { delay(); Sendtex(); } } 现在,电脑上的串口调试软件不能受到单片机发来的数据了 这是什么原因啊? 谢谢! (电路板上的串口是公的) 原理图在: http://www.daxia.com/bbs/moredata.asp?id=79364&syid=1103948 非常感谢! 马上送分
|