单片机uart中断c语言实验,STM8 UART接收中断程序

软件设计

/*********************************************************************

微 雪 电 子 WaveShare http://www.waveShare.net

目标系统: 基于STM8单片机

应用软件: Cosmic CxSTM8

说 明: 若用于商业用途,请保留此段文字或注明代码来源

深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权

*********************************************************************/

/*----------------------------------------------------------------------

实验内容:

USART自发自收,使用PB口的LED指示接收到的数据,观察是否与发送的数据一致。

----------------------------------------------------------------------

硬件连接:

将MCU.RXD与MCU.TXD使用短路帽短接,将PB口的LED指示灯使能开关切换到"ON"状态。

----------------------------------------------------------------------*/

#include

#define LED_DDR  PB_DDR

#define LED_PORT PB_ODR

#define LED_CR1  PB_CR1

#define LED_CR2  PB_CR2

void Init_UART3(void)

{

UART3_CR1=0x00;

UART3_CR2=0x00;

UART3_CR3=0x00;

// 设置波特率,必须注意以下几点:

// (1) 必须先写BRR2

// (2) BRR1存放的是分频系数的第11位到第4位,

// (3) BRR2存放的是分频系数的第15位到第12位,和第3位

// 到第0位

// 例如对于波特率位9600时,分频系数=2000000/9600=208

// 对应的十六进制数为00D0,BBR1=0D,BBR2=00

UART3_BRR2=0x00;

UART3_BRR1=0x0d;

UART3_CR2=0x2c;//允许接收,发送,开接收中断

}

void UART3_sendchar(unsigned char c)

{

while((UART3_SR & 0x80)==0x00);

UART3_DR=c;

}

@far @interrupt void UART3_Recv_IRQHandler (void)

{

unsigned char ch;

ch=UART3_DR;

LED_PORT=ch;

return;

}

void main(void)

{

unsigned char i=0;

LED_DDR=0XFF;

LED_CR1=0XFF;

LED_CR2=0X00;

Init_UART3();

_asm("rim");

while(1)

{

UART3_sendchar(i);

i++;

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值