//-------------------------------------头文件-------------------------------------- #include <reg52.h> #include <absacc.h> #include <intrins.h> //-------------------------------------头文件--------------------------------------
//********定义引脚************************************* 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(); } }
我错在哪里啊? 硬件都是通的, 谢谢! |