智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1491|回复: 0
打印 上一主题 下一主题

[编程类] 1

[复制链接]

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
QQ
威望
240
贡献
46
兑换币
0
注册时间
2010-10-8
在线时间
4 小时
跳转到指定楼层
1#
发表于 2010-10-20 23:41:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}
/*SCI0初始化*/
void SCi0Init(void)
{
  SCI0BDL=0X80;
  SCI0BDH=0X00;
  SCI0CR1=0X00;//正常8位模式,无奇偶校验
  SCI0CR2=0X2C;//接收中断允许
}
//读SCI 查询方式接收放入字节型变量
uchar SCi0read()
{
  if(SCI0SR1_RDRF==1) //表明数据从位移寄存器传输到SCI数据寄存器
  {
    SCI0SR1_RDRF=1;//读取数据寄存器会将RDRF清除  重新置位
    return SCI0DRL;//返回数据寄存器的数据
  }
}
//写SCI 判断SCI0SR1的第七位是否为1,是1则可以发送数据
void SCi0write(uchar ch)
{
  SCI0SR1_TDRE=1;//数据已被传送到发送移位寄存器
  SCI0DRL=ch;
  delay(10);
}
//接收中断函数
#pragma CODE_SEG NON_BANKED
void interrupt 20 SCI0_ISR(void)
{
  uchar ch;
  ch=SCi0read();
  PORTB=~ch;
}
void main(void)
{
SCi0Init();
DDRB=0XFF;
EnableInterrupts;
  for(;;)
  {
  } /* wait forever */
  /* please make sure that you never leave this function */
}
大家帮忙看看,这个串口通信SCI怎么不按我发送的数据点亮LED啊?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-1 21:45 , Processed in 0.040669 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表