本帖最后由 vectory 于 2011-7-21 13:36 编辑
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include <stm8s105s6.h>
#include <stm8s105c_s.h>
void uart_Interrupt (void);
extern unsigned char data;
static void delay5ms(void)
{
unsigned char i;
for(i=0;i<100;i++);
}
static void delay100ms(void)
{
unsigned char i;
for(i=0;i<20;i++)
{for(i=0;i<100;i++);}
}
void Sendchar(unsigned char byte)
{ PC_ODR =0X02;
delay5ms();
UART2_SR;
UART2_DR=byte; //
//while(!(UART2_SR & 0X80));
//while(!(UART2_SR & 0X40));
while (!_btst(UART2_SR,7));
while (!_btst(UART2_SR,6));
UART2_DR;
//delay5ms();
PC_ODR = 0X00;
//delay5ms();
}
unsigned char k_read (void)
{if((UART2_SR & 0X20))
{
if((UART2_SR & 0X28))
{
return UART2_DR;
}
}
}
main()
{
//unsigned char a[20];
unsigned char i;
unsigned char a=0,flag;
void Sendchar(unsigned char byte);
void senddata(unsigned char buff[],unsigned int length);
void startsend(unsigned char buff[],unsigned char length);
unsigned char k_read (void);
//char putchar (char c);
CLK_CKDIVR&= 0X00;
CLK_CKDIVR|= 0X08; //clk= 8MHZ
UART2_CR2 = 0X00;//disable rx tx
UART2_CR1 = 0X00;//uart enable m=0 8 bits data
UART2_CR3 = 0X00;//stop bit = 1
//UART2_BRR2 = 0X0B;//baud rate = 115200
//UART2_BRR1 = 0X08;
UART2_BRR2 = 0X01;//baud rate = 9600
UART2_BRR1 = 0X34;
//UART2_BRR2 = 0X0B;//baud rate = 14400
//UART2_BRR1 = 0X22;
UART2_CR2 = 0x1c;
//UART2_SR;
_bset(PC_DDR,1);
_bset(PC_CR1,1);
_bset(PC_CR2,1);
_bset (PC_ODR,1);
_asm("rim");
while (1)
{
UART2_CR2|=0x20;//接受中断开启
PC_ODR= 0X00;
delay100ms();
PC_ODR = 0X02;
UART2_DR = a;
// while (!_btst(UART2_SR,7));
// while (!_btst(UART2_SR,6));
Sendchar(a);
a++;
delay5ms();
}
}
@near @interrupt void uart_Interrupt (void)
{
// if(_btst(UART2_SR , 5))//UART2_SR & 0X20 ==0X20
{
data = UART2_DR;
_bset(UART2_SR , 5);//UART2_SR &= 0XDF;
//UART2_DR =data;
}
//if (_btst (UART2_SR ,3))
// {
// UART2_DR;
// }
PC_ODR = 0X02;
//UART2_CR2 &=(~0x20);//接受中断关闭
是利用485通信PC1接485使能端,单步可以实现接收数据,RUN的话一直是00;
各位大哥帮忙看看
} |