找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4581|回復: 0
打印 上一主題 下一主題
收起左側

跪求大神直接指點,小白最近剛到一個mega128a,問了些問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:83197 發(fā)表于 2015-6-16 21:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近剛接觸mega128a,在使用由于是小白,遇到一些問題。
目的:發(fā)送20~0,21個數(shù)字,發(fā)完后便停止發(fā)送。
問題:單片機一直不停地發(fā)送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; //接收中斷和發(fā)送中斷允許
UCSR0C=0x06; //寫UCSRC寄存器,異步通信無校驗,8位數(shù)據(jù)1位停止位
UBRR0H=baud_h; //寫波特率的值
UBRR0L=baud_l;
#asm("sei")
while (1)
{
if(tx_count >= 0)
USART0_Transmit();
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表