注意PROTEUS virtual terminal的设置如下图。advanced properties中,一定要选择inverted否则结果出错
#include
#include
//#include
//#include "skey.c"
#define uchar unsigned char
#define uint unsigned int
#define MCLK 8000000
uchar str[]="http://hi.baidu.com/282280072/blog";
void delay(uint ms)
{
uint i,j;
for(i=0;i
for(j=0;j<1141;j++);
}
void uart_init(uint baud)
{
UCSRB=0x00;
UCSRA=0x00; //控制寄存器清零
UCSRC=(1<
//选择UCSRC,异步模式,禁止 //校验,1位停止位,8位数据位
baud=MCLK/16/baud-1; //波特率最大为65K
UBRRL=baud&0xff;
UBRRH=(baud>>8)&0X0F; //设置波特率
UCSRB=(1<
//接收、发送使能,接收中断使能
//SREG=BIT(7); //全局中断开放
DDRD|=BIT(1); //配置TX为输出(很重要)
}
void uart_sendB(uchar data)
{
while(!(UCSRA&BIT(UDRE)));//等待数据reg为空
UDR=data;//写数据
while(!(UCSRA&BIT(TXC)));//等待数据发送结束
UCSRA|=BIT(TXC);//清除发送结束标志
}
void uart_sentString(uchar *s)
{
while(*s)
{
uart_sendB(*s++);
}
}
void main()
{
uchar i=4;
uchar j='a';
uart_init(19200);
for(i=0;i<20;i++)
{
uart_sendB(j+i);
uart_sendB(j+i);
//delay(15);
//下面两条命令输出换行
uart_sendB(0x0d);
uart_sendB(0x0a);
//delay(15);
}
uart_sentString(str);
//uart_sendB(j);
//uart_sendB(j+1);
//uart_sendB(j+2);
}
关键字:avr uart 仿真实验
引用地址:
avr uart仿真实验 PROTEUS virtual terminal
推荐阅读最新更新时间:2024-03-16 15:06
AVR单片机atmega16串口中断接收和发送程序
// Target : M16 // Crystal: 8.0000Mhz // AVR单片机 atmega16串口中断接收和发送程序。接收到字符后再发送出去 #include iom16v.h #include macros.h unsigned char com_in_buf ; void port_init(void) { PORTA = 0xFF; DDRA = 0xFF; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //UART0 initialize // desired ba
[单片机]
STM32开发板入门教程 - 串口通讯 UART
通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。 主要特性: 全双工的,异步通信 NR 标准格式 分数波特率发生器系统 -发送和接收共用的可编程波特率,最高到4.5Mbits/s 可编程数据字长度(8位或9位)
[单片机]
S3C2440的UART通信
1、UART原理简介 在介绍2440的UART控制器之前,我们首先来了解一下UART的原理 UART:Universal Asynchronous Receiver/Transmitter(通用异步收发送器),用来传输串行数据,发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。 UART最精简的连线形式只有3根线,TXD用于发送,RXD用于接收,GND用于提供参考电平。UART之间以帧作为数据传输单位,帧由具有完整意义的若干位组成,它包含开始位、数据位、校验位和停止位。发送数据之前,互相
[单片机]
STM8固件库+IAR 之--UART3
Stm8的串口:主要功能: 1:支持异步传输所以成为UART 2:lin模式 主从 3:红外编码模式 4:智能卡模拟功能 以上功能并不是所有串口都支持,stm8最多的是3个串口,配置简单,多说无益 本来想先写定时器1来着,可手头上正好有串口的程序,整理整理先贴上来呗~ 首先到stm8s_conf.h把 #define _UART3 (1) 打开,否则uart3不能用,重新编译一下静态库 贴main.c代码: #include stm8s.h /*========内部高速时钟初始化========*/ void init_hsiclk(void) { CLK_DeInit(); //寄存器复位 CLK_HSICmd(ENABL
[单片机]
学51单片机-UART口发送一个字符
UART口,又叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是单片机常用功能的一部分,也是早期台式电脑必备的一个硬件接口。 当年我调试UART口的时候,用的还是超级终端,现在都用串口助手了,比我们当时方便多了。 UART口按位发送和接收字节,虽然相比于并口,慢了很多,但是在有限的IO资源面前,这种方式是非常可取的。 UART口主要用于ASCII码的传输,传输过程遵循ANSI/EIA-232标准。ASCII码是啥?看下表: 就是说,当我想发送字符“A”的时候,我要向串口发送十进制数65,或者十六进制数41。 驱动电
[单片机]
AVR单片机的相关总结
1、AVR文档里要求最好不要中断嵌套,只能执行完这个中断再执行下一个中断; 2、ADC采样的时候,外部存在上拉51K的情况下,断路,测量的电压值是5V(工作电压是5V),说明mega88的输入阻抗是相当大的 哈哈; 3、SREG状态寄存器中, SEI、CLI就是开全局中断、关全局中断 (还以为没有来着),_NOP 、 _WDR; 4、Volatile (不稳定的) AVR全局变量的时候用 (可以避免编辑器对其的优化); 5、不用的IO口如果悬空的话,1是耗电量大处于判断状态;2是 受外界一点点干扰就可能成为反复振荡的输入信号(干扰问题); 6、推挽结构,输出不能直接接地 (大电流烧掉管子); 7、明确 PC (Program
[单片机]
AVR单片机学习程序(音乐合成)
//AVR单片机学习程序 //名称:音乐合成 //硬件:AVR-ATMEGA16实验板 //修改日志: #include iom16v.h #include macros.h //-------------位拉高-------------------------------------------- #define ADC0_H PORTA|=BIT(PA0) #define ADC1_H PORTA|=BIT(PA1) #define LEDLK_H PORTA|=BIT(PA2) //流水灯选通 #define SEGLK_H PORTA|=BIT(PA3) //数码管段码选通 #define BITLK_H PORTA|
[单片机]
基于AVR单片机的医用智能输液系统
静脉输液是我国目前临床治疗中最主要的一种输液方式,在实践工作中,医护人员一般是靠经验和观察通过转动输液器上的滑轮对滴速进行手动调节的。本系统是一种非接触式全自动的静滴检测和报警控制装置,时刻检测液体的滴速,并且在药液滴完后能够自动地切断液体进行本地和远程报警,以通知医护人员及时更换液体,对提高现代医疗服务系统的效率和质量都有着非常重要的意义。 1. 研究意义 目前,医院静脉输液主要是人工控制,由人监控的静脉输液,无法正确调解药液流速,速度过快由于点滴里有钾元素的成分会造成血管刺激,通常刺激会表现为疼痛。但通常输液快慢要看自身身体情况,但输液还是会对血管和心脏,肾脏有刺激。利用现有的科技设计智能输液系统,即可以控制药
[单片机]