本帖最后由 mmk 于 2017-2-6 18:03 编辑
下面是程序
--------------------------------------------------------------------------------------------------*/
#include "SH79F085.h"
#include "intrins.h"
#define SYSCLK 4150000
unsigned char flag,uart_buf;
/*---------------------------------------------------------------------------------------
初始化时钟
---------------------------------------------------------------------------------------*/
void Init_SysClk(void)
{
unsigned char tucData;
CLKCON = 0x08; //时钟0分频,打开高频时钟。
for(tucData=0;tucData<200;tucData++) //延时。
{
_nop_();
}
CLKCON |= 0x0C; //系统时钟切换到高频16.6MHz。
}
void Send(unsigned char c)
{
SBUF=c;
while(!TI)
{}
TI=0;
}
void init_uart(void)
{
ES=1; //允许串口中断
ET1=1; //定时器1允许中断
// SCON=0x40; // #0100,0000 b serial port mode 1, ren=0 disable recieve data
SCON=0x50; // #0100,0000 b serial port mode 1, ren=1 able recieve data
PCON=0x00;
TMOD=0x21;
TCON1=0x0C;
TL1=0xCA; //Timer1 baud = 9600Hz
TH1=0xCA; //波特率 = Fsysclk/32/(256-TH1),SMOD=0
TR1=1; //启动定时器
}
void init_io(void)
{
P0CR =0xFF; //P0端口输入/输出寄存器 0输入、1输出
P0PCR =0xFF; // 端口0内部上拉允 0:内部上拉电阻关闭 、 1:内部上拉电阻开启
P0 =0x00; //3bit端口0
P1CR =0x04; // P1.1设为输出,串口
P1PCR =0xFF;
P1 =0x9F;
P2CR =0xFF; //P2输出
P2PCR =0xFF;
P2 =0x00;
}
void main(void)
{
EA=0;
REGCON = 0x01; //打开VDDR电源。
_nop_();
_nop_();
init_io();
_nop_();
_nop_();
Init_SysClk();
_nop_();
_nop_();
init_uart();
_nop_();
_nop_();
EA=1;
flag=0;
while(1)
{
// Send(0x11);
// Send(Ad_Temperature);
// Send(3);
if(flag==1)
{
ES=0; //禁止串口中断
flag=0; //清零标志位
Send(0x11);
Send(3);
ES=1; //允许串口中断
}
}
}
void ser() interrupt 4 //串口接收中断
{
if(RI)
{
RI=0;
uart_buf=SBUF;
flag=1; //置位发送标志
}
}
求大神指教
|