找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3673|回复: 0
打印 上一主题 下一主题
收起左侧

跪求大神直接指点,小白最近刚到一个mega128a,问了些问题

[复制链接]
跳转到指定楼层
楼主
ID:83197 发表于 2015-6-16 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚接触mega128a,在使用由于是小白,遇到一些问题。
目的:发送20~0,21个数字,发完后便停止发送。
问题:单片机一直不停地发送14(20的16进制表示),看着都累
程序:
#include <mega128.h>
#include <delay.h>
#define UDRE 5
#defineF_CPU 4000000
#define baud 9600 //设置波特率的大小
#define baud_setting (unsigned int)((unsigned long)F_CPU/(16*(unsigned long)baud)-1) //波特率计算公
#define baud_h (unsigned char)(baud_setting>>8) //提取高位
#define baud_l (unsigned char)(baud_setting) //低位


unsigned int tx_count=20;

interrupt [USART0_TXC] void txc0_over(void)
{
delay_ms(1000);
tx_count--;
}


void USART0_Transmit()
{
while(!(UCSR0A & (1 << UDRE)));
UDR0 = tx_count;
}


void main(void)
{
PORTE.6 = 0;
PORTE.7 = 0;
DDRE.6 = 1;
DDRE.7 = 1;
UCSR0A=0x00; //单倍速模式
UCSR0B=0x48; //接收中断和发送中断允许
UCSR0C=0x06; //写UCSRC寄存器,异步通信无校验,8位数据1位停止位
UBRR0H=baud_h; //写波特率的值
UBRR0L=baud_l;
#asm("sei")
while (1)
{
if(tx_count >= 0)
USART0_Transmit();
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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