atmega16写得usart 输出 电压偏低是怎么回事?电源5v和芯片在仿真器上非常正常,拿到最简板上不行了。

atmega16写得usart 输出 电压偏低是怎么回事?电源5v和芯片在仿真器上非常正常,拿到最简板上不行了。,第1张

先把usart引脚和外部电路断开,看看电压是否还偏低。若是,说明是单片机引脚出了问题,可能是供电不正常兄山扮或者是引脚被烧。若不是,说明是外唯仿部的输入电阻过小将电平往地上拉;也可能是外部别的驱羡灶动源从而将线上的电平拉下来

ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。

ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW *** 作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内, ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

ATmega16 具有一整套的编程与系统开发工具,包括:C 语言 编译器、宏汇编、 程序调试器/ 软件仿真器、仿真器及评估板。 u 高性能、低功耗的8位AVR微处理器

l 先进的RISC 结构

l 131条指令

l 大多数指令执行时间为单个时钟周期

l 32个8位通用工作寄存器

l 全静态工作

l 工作于16MHz时性能高达16MIPS

l 只需两个时钟周期的硬件乘法器

l 非易失性程序和数据存储器

l 16K 字节的系统内可编程Flash,擦写寿命: 10,000次

l 具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的同时读写 *** 作

l 512 字节的EEPROM,擦写寿命: 100,000次

l 1K字节的片内SRAM

l 可以对锁定位进行编程以实现用户程序的加密

l JTAG 接口( 与IEEE 1149.1 标准兼容)

l 符合JTAG 标准的边界扫描功能

l 支持扩展的片内调试功能

l 通过JTAG 接口哪闹实现对Flash、EEPROM、熔丝位和锁定位的编程 u 两个具有独立预分频器和比较器功能的8位定时器/计数器

l 一个具有预分频器、比较李毕罩功能和捕捉功能的16位定时器/计数器

l 具有独立振荡器的实时计数器RTC

l 四通道PWM

l 8路10位ADC,8个单端通道,2个具有可编程增益(1x, 10x, 或200x)的差分通道

l 面向字节的两线接口

l 两个可编程的串行USART

l 可工作于主机/ 从机模式的SPI 串行接口

l 具有独立片内振荡器的可编程看门狗定时器

l 片内模数埋拟比较器

u 特殊的处理器特点

l 上电复位以及可编程的掉电检测

l 片内经过标定的RC振荡器

l 片内/片外中断源

l 6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby模式  u I/O和封装

l 32个可编程的I/O口

l 40引脚PDIP封装, 44引脚TQFP封装, 与44引脚MLF封装 :

l ATmega16L:2.7 - 5.5V

l ATmega16:4.5 - 5.5V l 8MHz ATmega16L

l 0-16MHz ATmega16

u ATmega16L在1MHz, 3V, 25°C时的功耗

l 正常模式: 1.1 mA

l 空闲模式: 0.35 mA

l 掉电模式: <1 μA

您好,这样:

#include <iom16v.h>

#include <macros.h>

#define uchar unsigned char

#define uint unsigned int

//#define BIT(n) (1<<n)

#pragma interrupt_handler uart_recdata:12

#define mcuclk 8000000

uchar rdata

uchar flag=0

void delay(uint n)//10ms延时

{

uint i,j

for(i=0i<含肆ni++)

for(j=0j<1543j++)

}

void uart_init(uint baud)//串扒如口控制状态寄存器初始化,波特率设置

{

UCSRB=0x00

UCSRA=0x00 //控制寄存器清零

UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0) //选择UCSRC,异步模式,禁止

// 校验,1位停止谈此轿位,8位数据位

baud=mcuclk/16/baud-1 //波特率

UBRRL=baud

UBRRH=baud>>8 //设置波特率

UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE) //接收、发送使能,接收中断使能

SREG=BIT(7) //全局中断开放

DDRD|=0x02//配置TX为输出(很重要)

}

void uart_senddata(uchar data)

{

while(!(UCSRA&(BIT(UDRE))))//第五位UDRE为高,数据寄存器空,发数据至UDR

UDR=data

while(!(UCSRA&(BIT(TXC)))) //第六位TXC高, 发送结束

UCSRA|=BIT(TXC) //置位TXC

}

void uart_recdata()

{

UCSRB&=~BIT(RXCIE)

rdata=UDR

flag=1

UCSRB|=BIT(RXCIE)

}

void main()

{

// uchar i='A'

// uchar j=4

uart_init(19200)

while(1)

{

if(flag)

{

uart_senddata(rdata)

flag=0

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12561042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存