本帖最后由 helper197 于 2011-7-31 02:18 编辑
您好
我使用 W77E058A 的单片机,但遇到一个问题是
Keil 4 上面都可以正确的模拟,不过放到硬件上
Uart 1 总是没有输出? Uart0 则是很正常
Sensor <sp485c < Uart 0 < W77E058a < Uart 1 < sp485c < PC
硬件的接线, uart1 除了 rx/tx都接到 sipexsp485c 上,
控制线 由 ww7e058a P1_0 拉出来接到 sp485c 的De
- #include"W77E58.h"
-
- unsigned char flag_1,flag_0;
- unsigned char a=0,b=0;
- unsigned char *sp;
- unsigned char c1[10]={0x01,0x05,0x00,0x00,0xFF,0x00,0x8C,0x3A};
- unsigned char c2[10]={0x01,0x05,0x00,0x00,0x00,0x00,0xCD,0xCA};
- unsigned char c3[10];
-
- void Delay(unsigned long int n)
- {
- unsigned char data i;
- unsigned int data j;
- j=n;
- while(j--){for(i=0;i<125;i++);}
- }
- main()
- {
-
- flag_1=1;
- flag_0=1;
- //SYSTEM init ,其中串口0用定时器2,串口1用定时器1
-
- /*******串口0定时器2**************/
-
- SCON0=0x50; //工作在模式1,接收允许
- RCLK=1;
- TCLK=1;
- CP_RL2=0;//T2CON=0x30; //用定时器2做串口0的波特率发生器
- RCAP2H=0xff; // 11.0592M晶振下,baud rate=2400
- RCAP2L=0x70;
- TH2=0xff;
- TL2=0x70;
- ES0=1;
- /********************/
- /*******串口1定时器1******/
- TMOD=0x20; //定时器1工作在模式1
- TL1=0xfd; //baud rate=9600
- TH1=0xfd;
-
- WDCON=0x00;//00:BAUDRATE*1; 80:BAUDRATE*2
- SCON1=0x58; //工作在模式1,允许接收
- ES1=1;
- TB81 = 0;
- /***********************/
- CKCON=0x01;//wait 3 cycle
- RCLK = 0;
- TCLK = 0 ;
-
-
- Delay(1500);
- RI1=0;
- TI1=0;
- Delay(500);
- EA=1;
- TR2=1;
- TR1=1;
-
- while(1)
- {
- if(flag_0==1)
- {
- TI=1;flag_0=0;
- }
- Delay(1500);
- flag_0=1;
-
- if(flag_1==1)
- {
- TI1=1;flag_1=0;
- }
- flag_1=1;
- }
- }
-
- void serial_0(void)interrupt 4 using 1
- {
- int i;
- if(RI)
- {
- flag_0=1;
- RI=0;
- }
- if(TI)
- {
- INT0 = 1;
- for(i=0;i<8;i++)
- {
- P0_0 = 0;
- TI=0;
- SBUF0=c1[i];
- while(TI==0) ;
- TI=0;
- P0_0 = 1;
- }
- INT0 = 0;
- }
- }
- void serial_1(void)interrupt 7 using 2
- {
- int i;
- if(RI1)
- {
- flag_1=1;
- RI1=0;
- }
- if(TI1)
- {
- T2 = 1;
- T2EX = 1;
-
- for(i=0;i<8;i++)
- {
- P0_1 = 0;
- TI1=0;
- SBUF1=c2[i];
- while(TI1==0) ;
- TI1=0;
- P0_1 = 1;
- Delay(1500);
- }
-
- T2EX = 0;
- T2 = 0;
- }
-
- }
复制代码
1
|
3个回答
|
|
|