主从机通信,用12864显示,从机按键,然后主机显示,不知道怎么搞,发现怎么都不显示,求助
//主机//
#include<reg52.h>
#include <stdio.h>
#include"S_12864.h"
#include"delay.h"
sbit RD_0=P3^4;
sbit led0=P1^0;
sbit Key0=P2^0;
bit y0;
bit t,s,ld;
uchar* c;
uchar k;
void Max485_Sendonechar(char c) //发送字节到PC
{
TI=0;
SBUF=c;
while(!TI);
TI=0;
}
void Max485_Sendstring(char *st) //发送字符串到PC
{
while(*st)
{
Max485_Sendonechar(*st++);
}
}
void Init() //串口工作方式的初始化 工作方式三
{
SCON = 0x50; //SCON: mode 1, 8-bit UART, enable rcvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON = 0x80; // 数据位8、停止位1。效验位无 (11.0592M)
TH1 = 0xF4; //TH1: reload value for 2400@11.0592MHz
TR1 = 1; //启动定时器1
ES = 1; //允许串口中断位
EA = 1; //允许总中断位
}
void keyscan()
{
if(Key0==0)
{
delay_12M_50ms();
if(Key0==0)
{
display_Key0();
}
}
}
void main()
{
Init();
RD_0=0;
c=0;
s=1;
k=0;
display_bingfang();
while(1)
{
if(Key0==0 && y0==0)
{
y0=1;
c = "as";
RD_0=1;
Max485_Sendstring(c); //发送字符串
//keyscan();
RD_0=0;
}
if(Key0==1 ) { y0=0; }
//keyscan();
}// keyscan();
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='s') { k++;ld=~ld; }
s=1; t=0;
if(k==10) { k=0;}
Key0=~0;
// keyscan();
led0=0;
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
//从机——1//
#include<reg52.h>
//#include"S_12864.h"
#define uchar unsigned char
#define SLAVE 0x02//设置设备从机号
uchar* c;
sbit Key0=P1^0;
sbit Key1=P1^1;
sbit Key2=P1^2;
sbit Key3=P1^3;
sbit led1=P2^0; // 接收 az , P.2 输出低电平, P3.3 输出高电平。
sbit led2=P2^1; // 接收 aa , P.2 输出高电平, P3.3 输出低电平。
sbit RD_1=P3^4;
bit y0,t,s;
uchar k;
void Max485_Sendonechar(char c) //发送字节到PC
{
TI=0;
SBUF = c;
while(!TI);
TI=0;
}
void Max_Sendstring(char *st) //发送字符串到PC
{
while(*st)
{
Max485_Sendonechar(*st++);
}
}
void Init()
{
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1
TMOD = 0x20; // 定时器工作方式2
PCON = 0x80; // 数据位8、停止位1。效验位无 (11.0592M)
TH1 = 0xF4; // TH1 = 0xFD; 波特率 2400
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
TR1 = 1;
ES = 1; // 开串口中断
EA = 1; // 开总中断
}
void main()
{
Init();
RD_1=0;
s=1;
k=0;
display_bingfang();
while(1)
{
if(Key0==0 && y0==0)
{
y0=1;
c = "as";
RD_1=1;
Max_Sendstring(c); //发送字符串
RD_1=0;
}
if(Key0==1 ) { y0=0; }
}
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='s') {led1=~led1;led2=~led2; k++; }
//if(SBUF=='s') {led1=1;led2=0; k--; }
s=1; t=0;
if(k==10) { k=0;}
if(k==255) { k=9; }
Key0=~0;
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
void T0_time()interrupt 1
{
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
k++;
if(k==20) // 这里修改时间
{
k=0;
led1=1;
led2=1;
}
}
|