atmega128L串口通信详解

合集下载

基于Atmega128和SJA1000的CAN总线通信应用设计

基于Atmega128和SJA1000的CAN总线通信应用设计

0 引 言
随着单片机在工业控制领域的应用越来越广 泛, 在很多场合都需要用单片机对现场的信息进行 采集与处理, 并与主机进行通信, 但往往会遇到长远 距离和大数据量传输不足的问题, 通过 C A N总线可 以解决此问题。本文用 A t m e g a 1 2 8实现主从节点相 互通信的简单电路, 但此单片机不能独立地满足要
第4 1卷第 1期 5 2 2 0 1 4年 2月 2 5日
数 字 通 信 D i g i t a l C o m m u n i c a t i o n
V o l 4 1 ,N o . 1 F e b . 2 5 2 0 1 4
D O I : 1 0 . 3 9 6 9 / j . i s s n . 1 0 0 1 3 8 2 4 . 2 0 1 4 . 0 1 . 0 1 4
本文 芯 片 工 作 在 P e l i C A N 模 式 下, 将芯片的 M O D E引脚置 1 , 即让 S J A 1 0 0 0的外部控制总线采3 Βιβλιοθήκη n t e l 模式 [ 。 用I
1 . 2 S J A 1 0 0 0芯片初始化 设置芯片工作在 P e l i C A N模式下, 初始化流程 图如图 1所示。
2 ] 能力和检错、 纠错能力 [ 。
图1 S J A 1 0 0 0初始化流程图
2 设计思路
2 . 1 硬件设计思路 在现实生活中, 例如医疗行业等, 涉及到多个控 制系统与服务器进行信息交换, 有时候需要大量远 距离的数据通信。传统的通信方式比如串口通信 I I C满足不了应用需求, 而主流的单片机芯片自身没 有集成 C A N总线的控制器和对应的收发器。针对以 上情况, 我们采用 S J A 1 0 0 0的控制器和 M C P 2 5 5 1收 发器来扩展 A t m e g a 1 2 8的 C A N总线接口, 实现节点 之间的通信。 A t m e g a 1 2 8的 P A口连接 S J A 1 0 0 0的 连接思路: A D口( 地址 / 数据总线) , P G 2口接 S J A 1 0 0 0的 A L E / A S 口( 输入信号模式) , P G 1口接 S J A 1 0 0 0的 / R D / E 口, P G 0口接 S J A 1 0 0 0的 / WR口, P D 0口接 S J A 1 0 0 0 [ 2 ] 的/ I N T口 。

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册V1.32011年5月E-mail: sdfdlut@1. ATMEGA128单片机概述ATMEGA128单片机是ATMEL公司推出的一款基于AVR内核,采用RISC结构,低功耗CMOS的8位单片机。

由于在一个周期内执行一条指令,ATMEGA128可以达到接近1MIPS/MHz的性能。

其内核将32个工作寄存器和丰富的指令集联结在一起,所有的工作寄存器都与ALU(逻辑单元)直接连接,实现了在一个时钟周期内执行一条指令可以同时访问两个独立的寄存器。

这种结构提高了代码效率,是AVR的运行速度比普通的CISC单片机高出10倍。

ATMEGA128单片机具有以下特点:128KB的可在系统编程/应用编程(ISP/IAP)Flash 程序存储器,4KB E2PROM,4KB SRAM,32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USART接口,一个8为面向字节的TWI(I2C)总线接口,8通道单端或差分输入的10位ADC(其中一个差分通道为增益可调),可编程带内部振荡器的看门狗定时器,一个SPI接口,一个兼容IEEE 1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。

2. ATMEGA128实验开发套件本实验开发套件包括:●测试通过的MEGA128实验板1块;●配套资料光盘1张;●AVR ISP并口下载线1条;●5110液晶模块1个;●遥控器1个;●USB ASP下载线(选配);●AVR JTAGICE仿真器(选配)。

其中资料光盘的内容主要包括:●ATMEGA128实验开发板用户手册.pdf(本文档);●AVR教程:⏹WINAVR 使用入门.pdf⏹AVR Studio 使用入门.pdf⏹AVR基本硬件线路设计与分析.pdf⏹芯艺的AVR_GCC教程.pdf⏹AVR的IO结构分析与范例.mht⏹AVR高速嵌入式单片机原理与应用●芯片手册(包括24C02、74HC595以及中文的I2C协议文档等内容)●开发工具软件;⏹AVR Studio V4.12;⏹WINAVR(GCC) 编译器;⏹IAR for AVR V4.10A;⏹并口下载工具PONYPROG V2.06;⏹ICCAVR 双龙提供;图3 新建工程对话框点击Next,进入第三步。

Atmega128开发板使用说明书

Atmega128开发板使用说明书

Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。

按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。

Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。

提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。

编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。

请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。

ATmega128单片机概述、系统结构解析知识讲解

ATmega128单片机概述、系统结构解析知识讲解
1)AVR单片机废除机器周期,采用RISC,以字为指令 长度单位,取指周期短,可预取指令,实现流水作业, 可高速执行指令。有高可靠性为后盾。
2)AVR单片机在软/硬件开销、速度、性能和成本多方 面取得优化平衡,是高性价比的单片机。
3)内嵌高质量的 Flash程序存储器,擦写方便,支持 ISP和IAP,便于产品 的调试、开发、生产、更新。
AT90S1200/2313/8515/8535 AT89C51
高档ATmega系列单片机
ATmega8/16/32/64/128 存储容量为8/16/32/64/128KB ATmega8515/8535
64脚
6/78 导航、制导与控制
内容
1、AVR单片机简介
AVR单片机主要特性 AVR系列单片机的选型
ATmega128单片机 概述、系统结构
夏洁 2009年3月
1
内容
一、 ATmega128单片机概述系统结构
1、AVR单片机简介(主要特性、选型) 2、ATmega128单片机
二、 ATmega128单片机系统结构
2/78 导航、制导与控制
1、AVR单片机简介
ATMEL公司介绍
是世界上著名的高性能、低功耗、非易失性存 储器和数字集成电路的一流半导体制造公司。
1997年,ATMEL公司出于市场需求,推出 了全新配置的精简指令集RISC单片机高速 8位单片机,简称为AVR。
广泛应用于计算机外设、工业实时控制, 仪器仪表、通信设备、家用电器等各个领 域。
3/78 导航、制导与控制
1.1 AVR单片机主要特性
衡量单片机性能的重要指标
高可靠性、功能强、高速度、低功耗、低价位
ATmega128单片机结构框图

Atmega128开发板使用说明书

Atmega128开发板使用说明书

Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。

按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。

Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。

提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。

编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。

请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。

ATmega128串口通信程序(中断方式)

ATmega128串口通信程序(中断方式)

ATmega128串口通信程序(中断方式)2011-06-05 20:08:10| 分类:单片机程序编写| 标签:|字号大中小订阅程序采用IAR系统编译,实现使用串口调试助手收发数据的功能#include<iom128.h>#include<inavr.h>#include<string.h>#define INT8U unsigned char#define INT16U unsigned int#define UDRIE0 5/* UART Buffer Defines */#define UART0_RX_BUFFER_SIZE 128#define UART0_TX_BUFFER_SIZE 128/* Static Variables */static unsigned char UART0_RxBuf[UART0_RX_BUFFER_SIZE];static volatile unsigned char UART0_RxHead;static volatile unsigned char UART0_RxTail;static unsigned char UART0_TxBuf[UART0_TX_BUFFER_SIZE];static volatile unsigned char UART0_TxHead;static volatile unsigned char UART0_TxTail;static unsigned char UART0_Flag=1;void USART_INIT( void ){UBRR0H = 0x00;UBRR0L = 0x0B;//9600 at 1.8432MUCSR0A = 0x20;UCSR0B = 0xD8;//开接收结束中断,发送结束中断接收使能,发送使能UCSR0C = 0x06;//异步模式,1位停止位,8位数据位UDR0 = 0x00;//清空数据寄存器UART0_RxTail = 0;UART0_RxHead = 0;UART0_TxTail = 0;UART0_TxHead = 0;__disable_interrupt();//关全局中断}void Tran_Byte( INT8U sdata ){if(UART0_Flag == 0){UDR0 = sdata;UART0_Flag = 1;}else{UART0_TxBuf[UART0_TxHead] = sdata;UART0_TxHead++;if(UART0_TxHead >= UART0_TX_BUFFER_SIZE) UART0_TxHead = 0; }__enable_interrupt();}void Send_String( INT8U *string ){INT8U temp;while(1){temp = *string;Tran_Byte(temp);string++;if(*string == 0x00)break;}}INT8U HaveDataRxd( void ){if(UART0_RxHead != UART0_RxTail) return 1;elsereturn 0;}INT8U GetDataFromRxdBuf( void ){INT8U temp;temp = UART0_RxBuf[UART0_RxTail];UART0_RxTail ++ ;if( UART0_RxTail >= UART0_RX_BUFFER_SIZE ) { UART0_RxTail = 0 ;}return temp;}//清空接收缓冲区。

ATmega128L单片机的MicroSD卡读写

ATmega128L单片机的MicroSD卡读写

T ECH N OLOGYRE VI E W技术纵横ATmega128L单片机的Micro SD卡读写u西安工程大学朱大锐张团善高文摘要针对电脑横机控制系统对花型文件数据存储的要求,在ATmega128L单片机基础上采用Micro SD卡实现嵌入式文件系统。

文章介绍了Micro SD卡的特点、FAT文件系统、SPI模式协议以及硬件接口的实现。

通过ATmega128L的SPI模式与Micro SD卡进行同步数据传输,实现Micro SD卡的读写,以FAT32文件格式建立相应的文件系统,把数据以文件方式写入Micro SD卡。

通过单片机向Micro SD卡发送读写扇区命令,完成文件的创建、打开、读写、删除等操作。

关键词ATmega128L Micro SD卡串行外设协议文件分配表引言随着工业控制系统功能的增强,系统对于存储介质的安全、容量、性能的要求越来越高。

Micro SD卡是在SD卡和Mini SD卡基础上发展起来的一种多功能存储卡,具备串行和随机存取能力,可以通过专用优化速度的串行接口访问,数据传输可靠,安全性好,传输速度快,存储容量大,体积小,被列为目前全球最小的迷你存储卡。

Micro SD卡支持SD模式和SPI模式。

随着高性能单片机的性能不断提高,利用高性能、低功耗的AVR8位ATmega128L单片机的串行外设接口SPI与Micro SD卡之间进行高速同步数据传输,设计开发了一种嵌入式文件系统。

1硬件电路设计Micro SD卡的接口可以支持两种操作模式:SD模式和SPI模式。

主机系统可以选择其中任一模式。

SD卡模式允许4线的高速数据传输,传输速率高,但是大部分单片机无此接口,使用软件模拟协议复杂。

SPI模式使用简单通用的SPI通道接口就可实现数据传输,目前大多数单片机提供SPI接口。

SPI模式的优势在于可以使用标准主机,从而把外设减少到最低。

SPI模式相对于SD模式的缺点是损失了传输速度;但是目前的微处理器的处理速度越来越高,利用SPI模式大都能满足工程需要。

atmega128实用双串口通讯

atmega128实用双串口通讯

}
tx_data[21] =data;
led_2_0();
//----------------数据校验、处理部分
if( (tx_data[0]==0xfe) && (tx_data[21]==0x16) )

//--------------------------略 }
} //--------uart 1----RX-----中断方式- 同上---------------------ISR(USART1_RX_vect) {
unsigned char status,data; status=UCSR1A; data=UDR1; unsigned char f; //----status &= ~(FRAMING_ERROR1 | PARITY_ERROR1 | DATA_OVERRUN1); //----f=data;
//---------------------------------------------
#define
led_1_1() (PORTE |= bit(3))//--1
#define #define #define #define #define #define #define #define #define
Atmega128 实用串口通讯程序
1、 双串口异步通讯, USART0——发送使能,接收使能 、2400bps/8 位/偶校验/1 停止位
USART1——发送使能、9600bps/8 位/无校验/1 停止位
2、 外围 5 个 LED 指示 共阳极, PE3~PE7
#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <avr/interrupt.h> #include <avr/wdt.h>

AVR ATmega128全功能工业控制器设计文档说明书

AVR ATmega128全功能工业控制器设计文档说明书

AVR单片机的全功能工业控制器设计吴焕琅深圳市中天越华自动控制科技有限公司摘要:介绍一款工业级的实用全功能控制器。

该控制器能隔离采集多种输入信号,输出多种控制信号;具有实时时钟、历史数据存储功能,彩色液晶显示界面,带有触摸屏操作和远程通信接口。

核心部分CPU采用AVR ATmega128单片机。

目前已用于批量生产。

关键词:隔离采集控制单片机彩色显示485接口ATmega128DS1642引言在自动控制产品的设计过程中,实现方案的选择常常是很矛盾的。

使用可编程逻辑控制器(PLC)和人机界面(HMI)来实现,开发速度较快,但成本太高,所开发的产品没有市场竞争力;使用单片机开发,成本低但开发周期长、开发量大且通用性不好。

用户需要的是一种成本低、开发周期较短、通用性较好的控制器,因此全功能工业控制器有很大的应用市场。

全功能工业控制器的整个电路分为信号隔离输入部分、控制器输出部分、实时时钟与历史数据存储部分、彩色液晶显示和触摸屏控制部分、通信接口等。

1信号隔离输入电路信号隔离输入电路分为开关量隔离输入、模拟量隔离输入、高速电脉冲隔离输入,电路如图1所示,开关量的隔离输入较为简单,输入信号采用光耦进行隔离后送入单片的普通I/O,单片机用查询方式进行采集。

图1信号隔离输入电路高速电脉冲的采集需要注意的是,所设计的电路必须适应高速信号采集的要求,因此隔离光耦应采用高速光耦(如6N137等)。

采用查询方式采集高速脉冲容易造成采集数据的丢失,高速脉冲应采用中断方式进行采集。

模拟量隔离采集是本控制器的一个重点和难点,笔者之前采用了线性光耦等多种方式进行模拟量的隔离采集实验,均未获满意的效果。

这里采用一种先将模拟量数字化(使用AD7705),然后通过有光耦隔离的数据口送到CPU进行模拟量隔离采集的方式,效果理想。

2控制器输出电路控制器的输出方式有继电器输出、晶体管输出、模拟电压输出,如图2所示。

继电器输出和晶体管输出电路较为简单,这里不作详细的介绍。

ATmega128单片机的系统结构综述

ATmega128单片机的系统结构综述

3、系统时钟及其选项



Flash 时钟 clkFLASH Flash 时钟控制Flash 接口的 操作。此时钟通常与CPU 时钟是同步的。 异步定时器时钟 clkASY 异步定时器时钟允许异步 定时器/ 计数器直接由外部32 kHz 时钟晶体驱动, 使得此定时器/ 计数器即使在睡眠模式下仍然可 以为系统提供一个实时时钟。 ADC 时钟 clkADC ADC具有专门的时钟。这样可 以在ADC工作的时候停止CPU和I/O时钟以降低 数字电路产生的噪声,从而提高ADC 转换精度。


两种类型的中断: 中断向量表:P91 事件触发并置位中断标志。 只要中断条件满足,就会一直触发。 AVR 退出中断后总是回到主程序并执行一条 指令才可以去执行其他被挂起的中断。 程序存储器空间的最低地址缺省定义为复位和 中断向量。中断向量所在的地址越低,优先级 越高。
1.6 复位和中断处理
3、系统时钟及其选项

时钟源 ATmega128有如下几种通过熔丝位选择的 时钟源。时钟输入到AVR 时钟发生器,并 通往其他合适模块。
3、系统时钟及其选项

默认时钟源 器件出厂时CKSEL = “0001”, SUT = “10”。该默认时钟源为最长启动时间的内 部RC 振荡器。该默认设置保证所有的用 户通过系统内或并行编程得到其需要的时 钟源。
4、系统控制和复位
1.上电复位 AVR内部含有上电复位POR(Power_on Reset) 电路无论何时,只要Vcc低于检测电平Vpot时,器 件进入复位状态。
4、系统控制和复位
2.外部复位 外部复位是由外加在RESET引脚上的低电平将产生 的。当RESET引脚被拉低于Vrst的时间大于1.5µs时 既触发复位过程

Almel ATmega128 ATmega128L 可编程 Flash 说明书

Almel ATmega128 ATmega128L 可编程 Flash 说明书

产品特点•高性能、低功耗的 AVR® 8位微处理器•先进的 RISC 结构–133条指令 – 大多数可以在一个时钟周期内完成–32 x 8 通用工作寄存器 + 外设控制寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性的程序和数据存储器–128K 字节的系统内可编程Flash寿命: 10,000次写/擦除周期–具有独立锁定位、可选择的启动代码区通过片内的启动程序实现系统内编程真正的读-修改-写操作–4K字节的EEPROM寿命: 100,000次写/擦除周期–4K 字节的内部SRAM–多达64K字节的优化的外部存储器空间–可以对锁定位进行编程以实现软件加密–可以通过SPI实现系统内编程•JTAG接口(与IEEE 1149.1标准兼容)–遵循JTAG标准的边界扫描功能–支持扩展的片内调试–通过JTAG接口实现对Flash, EEPROM, 熔丝位和锁定位的编程•外设特点–两个具有独立的预分频器和比较器功能的8位定时器/计数器–两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立预分频器的实时时钟计数器–两路8位PWM–6路分辨率可编程(2到16位)的PWM–输出比较调制器–8路10位ADC8个单端通道7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式–可以通过软件进行选择的时钟频率–通过熔丝位可以选择ATmega103兼容模式–全局上拉禁止功能•I/O和封装–53个可编程I/O口线–64引脚TQFP与 64引脚 MLF封装•工作电压–2.7 - 5.5V ATmega128L–4.5 - 5.5V ATmega128•速度等级–0 - 8 MHz ATmega128L–0 - 16 MHz ATmega128微处理器,具有128K字节的系统BDTIC /ATMEL2ATmega1282467L–AVR–05/04引脚配置Figure 1. ATmega128的引脚综述ATmega128为基于AVR RISC 结构的8位低功耗CMOS 微处理器。

ATmega128 ATmega128L 介绍

ATmega128 ATmega128L 介绍
ATmega128 ATmega128L 介绍
ATmega128 ATmega128L 介绍
ATmega128/128L 带 128K 字节 FLASH 的在线可编程 8 位微控制 器 是 AVR 系列中功能最强的单片机,掌握了 ATmega128 的开发应用, 对其它 AVR 单片机的开发应用等于杀鸡用牛刀,快极了 1 特 点
ATmega128 具有一整套的编程和系统开发工具 C编译器 宏汇编器 调试/模拟器 JTAG ICE 在线仿真器和SL-MEGA128评估板 二 ATmega103 和 ATmega128 的兼容性
ATmega128 是一种很复杂的微控制器 它的 I/O 地址取代了保留在AVR指令集中的 64 个 I/O地 址 为确保向后兼容 ATmega103 ATmega103上所有I/O的位置与ATmega128上的相同 很多附加的 I/O 地址被加到一个从$60到$FF的扩展外部I/O空间中(例如 在ATmega103 的内部 RAM 空间中) 这些地址只能用 LD/LDS/LDD 和 ST/STS/STD 指令访问 而不能用 IN 和 OUT 指令 内部 RAM 空 间的重定位对于ATmega103用户来说可能仍是一个问题 同样 如果代码使用绝对地址那么增加的中 断向量也是一个问题 要解决这些问题 可以通过编程一个熔丝M103C来选择 ATmega103 兼容模式 在这一模式下 不能使用扩展I/O空间中的程序 所以内部 RAM象ATmega103一样定位 同时 扩展 中断向量被去除 ATmega128 百分之百与 ATmega103引脚兼容 在PCB上可以替代ATmega103 应用笔记 “用ATmega128 替换 ATmega103” 中说明了用户在用ATmega128 替换 ATmega103时应 注意的事项 三 ATmega103 兼容模式

Atmegal128单片机寄存器

Atmegal128单片机寄存器

ATMEGAL128二、寄存器I=1:允许全局中断C=0:禁止全局中断(2)T:位复制存储将寄存器某一位复制到T,或将T复制到寄存器某一位(3)H:半进位标志位H=1:低4位向高4位有进位H=0:低4位向高4位无进位(4)S:符号位S=N异或V(5)V:2进制补码溢出标志V=1:2进制补码有溢出V=0:2进制补码无溢出(6)N:负数标志位N=1:结果是负数N=0:结果是正数(7)Z:零标志Z=1:结果是零Z=0:结果不是零(二、三)SPH,SPL:堆栈指针堆栈区的初地址,SPL是低8位,SPH是高8位(1)SRE:外部扩展时能SRE=1:允许外部扩展,三总线扩展SRE=0:禁止外部扩展(2)SE休眠模式使能SE=1:允许休眠模式SE=0:禁止休眠模式(3)SM2,SM1,SM0:休眠模式选择(4)IVSEL:中断向量选择IVSEL=1:中断向量地址选择Boot区起始地址IVSEL=0:中断向量地址选择Flash区起始地址(5)IVCE:中断向量选择使能IVCE=1:使能中断向量选择IVCE=0:禁止中断向量选择(五)XMCRA:外部存储器控制A低地址(六)XMCRB:外部存储器控制B(1)XMBK外部存储器总线保持使能:XMBK=1:总线AD0~AD7口线上的总线保持功能XMBK=0:禁止总线保持使能(七)MCUCSR:复位标志(1)JTD:JTAG测试使能JTD=1:JTAG测试使能JTD=0:禁止JTAG测试(2)JTRF:JTAG测试复位标志JTRF=1:JTAG复位JTRF=0:JTAG没复位(3)WDRF:看门狗复位标志WDRF=1:看门狗复位WDRF=0:看门狗没复位(4)BORF:掉电检测复位标志BORF=1:掉电检测复位BORF=0:没掉电(5)EXTRF:外部引脚复位标志EXTRF=1:外部引脚复位EXTRF=0:外部引脚没复位(6)PORF:上电复位标志PORF=1:上电复位PORF=0:没上电复位TMS=1:寄存器PSR0和PSR321保持其数据直到被更新。

atmega128L串口通信详解

atmega128L串口通信详解

/***********************************************************************
void uart0_init(void00; //关闭 UART00 //不使用倍速发送(异步) //数据位为 8 位 //异步正常情况下的计算公式 //接收使能和发送使能
while (*s) { putchar0(*s); s++; } putchar0(0x0a);//回车换行 //putchar0(0x0d); } /*********************************************************************** ***** 函数功能:主程序 入口参数: 出口参数: ************************************************************************ ****/ void main(void) { unsigned char i; uart0_init();//UART0 初始化 puts0("HELLO!"); while(1) { puts0("test ok!"); } }
eg:
UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为 1 位,数据位为 8 位
4、设置 UBRR:
UBRR 的设置和这些参数有关:U2X0,CPU 频率,波特率 当 U2X0 为 0 时,即异步正常模式 异步正常模式下 异步正常模式 ,UBRR 的计算公式: 1、U2X=0 时的公式计算 UBRR0L= (F_CPU/BAUDRATE/16-1)%256; UBRR0H= (F_CPU/BAUDRATE/16-1)/256; 2、U2X=1 时的公式计算

ATmega128在开发应用中应注意的问题

ATmega128在开发应用中应注意的问题

此外,ATmega128自带输入上拉电阻功能,通过设置即可以实现其功能。

例如将PA口设为输入口并且加上拉电阻,可以如下设置:DDRA=0x00;//将PA口设置为输入端口PORA=0xff;//将PA输入口加上拉电阻(2)位操作的使用方法采用ICCAVR对ATmega128的位操作的使用方法比较麻烦,不像51系列那样可以直接对某一个引脚进行置0或置1,而是要通过如下的方法进行位操作:如要对PA端口的第1位置1,则用C语言必须按PORTA|=(1<<pa1)编写;如要对pa端口的第2位置0,则用c语言必须按porta&=*(1<<pa2)编写。

<> </pa1)编写;如要对pa端口的第2位置0,则用c语言必须按porta&=*(1<<pa2)编写。

<>这样就可以单独对某一位操作而不影响其他位。

位操作对其他寄存器也同样适合,例如若要对某个口的几位设为输入,某几位设为输出,就可以通过上面的置1、置0方法来实现。

(3)中断ATmega128中断资源丰富,一共有35个中断源,在ICCAVR的iom128v.h头文件中给出了这些中断源对应的中断向量表。

当用到相应的中断时,首先应设置好对应的中断向量。

用ICCAVR设置ATmega128中断的方法与Keil51设置中断的方法截然不同,例如若需要将ATmega128的串口0设置为中断接收,就必须在程序中做如下设置:#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC否则程序不能中断接收,延长开发过程。

ATmega128作为一种功能强大的芯片,相信会在不同的领域发挥不同的作用,为此需要人们不断地提高对ATmega128的认识。

而且ATmega128与AVR等其他单片机如ATmega8、ATmega103、AT90S8535系列有相同的开发方法,掌握了ATmega128就可以在开发其他AVR类型的单片机时应用自如。

ATmega128单片机IAP功能的应用

ATmega128单片机IAP功能的应用

ATmega128具备引导加载支持的用户程序自编程功能(In-Sysytem Programming by On-chip Boot Program),它提供了一个真正的由MCU本身自动下载和更新(采用读/写同时"Read-While-Write"进行的方式)程序代码的系统程序自编程更新的机制。

利用AVR的这个功能,可以实现在应用编程(IAP)以及实现系统程序的远程自动更新的应用。

IAP的本质就是,MCU可以灵活地运行一个常驻Flash的引导加载程序(Boot Loader Program),实现对用户应用程序的在线自编程更新。

引导加载程序的设计可以使用任何的可用的数据接口和相关的协议读取代码,或者从程序存储器中读取代码,然后将代码写入(编程)到Flash存储器中。

引导加载程序有能力读写整个Flash存储器,包括引导加载程序所在的引导加载区本身。

引导加载程序还可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。

引导加载程序区的大小可以由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该段程序区的不同级别的保护。

本节将给出一个实际的的Boot Loader程序,它可以配合Windows中的超级终端程序,采用Xmodem 传输协议,通过RS232接口下载更新用户的应用程序。

5.2.1 基本设计思想1.Boot Loader程序的设计要点Boot Loader程序的设计是实现IAP的关键,它必须能过通过一个通信接口,采用某种协议正确的接收数据,再将完整的数据写入到用户程序区中。

本例Boot Loader程序的设计要点有:l 采用ATmega128的USART口实现与PC之间的简易RS232三线通信;l 采用Xmodem通信协议完成与PC机之间的数据交换;l 用户程序更新完成后自动转入用户程序执行;l Boot Loader程序采用C语言内嵌AVR汇编方式编写,阅读理解方便,可移植性强,代码小于1K字。

基于ATmega128的测控系统的Modbus通信

基于ATmega128的测控系统的Modbus通信
2 硬件结构及通信原理
单片机 AT meg a128 是 AT M EL 公司的一款基 于增强精简指令集 RISC 结构的 8 位微控制器 。 它 运用 H arva rd 结构 , 在前一条指令执行时就取出现 行指令 , 再以一个周期执行指令[ 2] 。 它拥有大容量 的存储器及各种接口 , 其中与实现 Modbus 通信相 关的接口是一高度灵活的串行通信设备即全双工通 用同步 /异步串行收发模块 USA RT , 分为时钟发生 器 、数据发送器和接收器 3 部分(见图 2)。 控制寄 存器为所有模块共享 。
大的优点来弥补下位机相对地速度慢 、容量小等不 足 , 从而更趋完善 。
5 结 语
M odbus 串行通信协议一般多用在 16 或 32 位 P LC 通信模块中[ 4] , 但本文经巧妙的程序处理后在 8 位 AV R 单片机中也实现了 Mo dbus 协议(Mo dbus RT U 模 式)及与上 位机组态 软件 的实时 通信 。 这无疑使该微 机监控系统存储数据的 能力大大提 高 , 现场测试的危险性减小 , 更重要的是测试仪不再 是一台孤立的仪器 , 不用开发任何驱动程序而只通 过简单的组态即可方便地接入任何支持 M odbus 协 议的组态软件中 , 从而有效克服了常见的“自动化孤 岛”现象 。本文所用的设计思想和方法对类似下位 机系统有普遍的启发和借鉴意义 。
0 引 言
最初由莫迪康(M odicon)公司制定的 M odbus 协议现已逐渐发展成为流行的 开放性工业标 准之 一 , 且 被 国 内 外知 名 组 态 软 件 如 iF IX 、组 态 王 、 MCGS 等支持 。 本文所涉及的 下位机系统是 采用 AT meg a128 单片机开发的 、用来测试及预测高压开 关相关机械特性的高压开关测试仪 。高压开关的工 作环境一般较危险 , 不适于近距离采集现场数据 , 而 Mo dbus 协议作为普遍通用的串行通信协议 , 恰可 实现远距离传输数据 。 故本文在 A T mega128 单片 机中开发了 Mo dbus 通信接口模块 , 以与无需再开 发任何驱动程序的上位机组态软件通信 。

ATmega128USART资料

ATmega128USART资料

2018/11/7
机电系统控制电路设计
9
Atmega128的USART
数据帧格式
串行数据帧由数据字加上同步位( 开始位与停止位) 以 及用于纠错的奇偶校验位构成。USART 接受以下30 种组 合的数据帧格式: 1 个起始位 5、 6、 7、 8 或9 个数据位 无校验位、奇校验或偶校验位 1或2 个停止位 数据帧以起始位开始;紧接着是数据字的最低位,数 据字最多可以有9 个数据位,以数据的最高位结束。如果 使能了校验位,校验位将紧接着数据位,最后是结束位。 当一个完整的数据帧传输后,可以立即传输下一个新的数 据帧,或使传输线处于空闲状态。
机电系统控制电路设计 5
Atmega128的USART
掌握串口通讯需要了解的知识内容为:
电平变换:TTL电平——RS-232电平 了解数据帧格式内容
控制寄存器与状态寄存器的设置
通讯波特率的设置 单片机如何与计算机进行串口通讯 串口调试助手软件 如何实现多机通讯
2018/11/7
2018/11/7 机电系统控制电路设计 1
Atmega128的USART
单片机的通信方式主要有两种:并行通信和串行通信。 并行通信是指数据的各位同时发送或接收。串行通信是 指数据一位一位顺序发送或接收。
单片机的串行接口是一个可编程的全双工串行通信接口。
可以用作异步通信方式(UART)与采用串行接口的外围 设备相连接。 ATmega128 具有两个USART,USART0(PE0-RXD0,PE1TXDO)和USART1(PD2-RXD1,PD3-TXD1)。USART0和 USART1具有不同的I/O寄存器。
机电系统控制电路设计
6
Atmega128的USART

ATMEGA128手册笔记

ATMEGA128手册笔记

P23 外部存储器接口有关该部分的内容还要看P308的外部数据存储器时序P33 系统时钟及其选项P46 系统控制和复位P51 看门狗定时器P81 I/O寄存器的说明P84 外部中断P86 8位定时器/计数器0P102 访问16位寄存器写16位寄存器,要先写高8位寄存器,读16位寄存器,先读低8位寄存器。

P106 定时器计数器的时钟源可以使用内部时钟源,也可以使用外部时钟源,由TCCRx控制寄存器B中的CSn2:CSn0定义,具体见P123 16位定时器计数P132 具有PWM功能的定时计数器2 目前不用看P145 输出比较调制器目前不用看P147 串行通讯接口SPI 没看P155 USART 支持4中工作模式:正常的异步模式,倍速的异步模式,同步主机模式,同步从机模式。

内部时钟可用于正常的异步模式、倍速的异步模式、同步主机模式三种,同步从机模式要使用外部时钟,由XCK引脚输入。

串口的初始化:包括波特率的设定,数据帧的设定,以及根据需要使能接受器和发送器,对于中端使能的串口操作,在初始化时首先要清零全局中断标志位(全局中断被屏蔽).P171 多处理器通讯模式目前没看P173 串口寄存器说明USART控制状态寄存器A---UCSRnAUPEn-------奇偶校验错误MPCMn---------多处理器通信模式USART控制状态寄存器B---UCSRnBTXCIEn-----发送结束中断使能UDRIEn----数据寄存器空中断使能UCSZn2-----设置数据帧包含数据长度USART控制状态寄存器C---UCSRnC0异步模式1同步模式UPMn1 UPMn000 0 禁止0 1 1 保留10 2 偶校验1 1 3 奇校验USBSn 停止位选择01bit12bitUCSZn2 UCSZn1 UCSZn0 字符长度0 0 0 0 5位0 0 1 1 6位0 1 0 2 7位0 1 1 3 8位1 1 1 7 9位P181 两线串行接口TWIP188 TWI寄存器说明比特率寄存器TWBR若SREG的I标志以及TWCR的TWIE标志也置位,TWI完成当前工作就会置位TWINT执行中断操作,进入中断程序后该位硬件不会自动清除,需要用软件写“1”来清0TWEA----使能应答TWEA置位后,出现如下的三个条件时发出ACK应答TWSTA-----start 状态位当CPU希望自己成为主机时需要置位TWSTA,发送start信号后软件必须清零TWSTA。

Atmega128串口485通信

Atmega128串口485通信

{软件环境:ICC AVR 6.31A硬件平台:atmega128a实现UART0的半双工485通信,中断方式接受,查询方式发送。

485的收发控制引脚为PE2。

供大家学习交流使用}1,以下是delay.h文件#ifndef _delay_h_#define _delay_h_//void delay_nus(unsigned int n);//void delay_nms(unsigned int n);//void delay_1us(void);//void delay_1ms(void);void delay_1us(void) //1us延时函数{NOP();}void delay_nus(unsigned int n) //N us延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1us();}void delay_1ms(void) //1ms延时函数{unsigned int i;for (i=0;i<1140;i++) ;}void delay_nms(unsigned int n) //N ms延时函数{unsigned int i=0;for (i=0;i<n;i++) delay_1ms();}#endif/***********2,以下是uart.h头文件/***********uart.h使用端口:uart0及控制端口PE2; uart1及控制端口PD4晶振:11.0592M查询方式发送,中断接收。

*************************************************/#ifndef _uart_h#define _uart_h#include <iom128v.h>#include <macros.h>#include "delay.h"#define fosc 11059200#define baud 9600#define uchar unsigned char//#define amount 8 //data amount//uchar inbox[amount]; //transmited and received data buff.//uchar buff = 0;//unsigned char inbox[10];/****uart0 initialize************/void Uart0_initial(void){UCSR0B = 0x00;// disable while setting uartUCSR0A = 0x00;UCSR0C = (1<<UCSZ01) | (1<<UCSZ00);// 8bit +1bit stopUBRR0L = (fosc/16/(baud+1))%256;//此公式为datasheet上,是正确的// UBRR0H = (fosc/16/(baud+1))/256;//网上例程很多用baud+1,经试验不行// UCSR0B = (1<<RXCIE0)|(1<<RXEN0) | (1<<TXEN0); //RXCIE0 RXEN TXEN PORTE |=BIT(PE2);// Set PE2,DDRE |= BIT(PE2); // RXD0 enable.}/**uart1 initialize**************/void Uart1_initial(void){UCSR1B = 0x00;//disable while setting uartUCSR1A = 0x00;UCSR1C = (1<<UCSZ11) | (1<<UCSZ10);//8bit + 1 stopUBRR1L = (fosc/16/baud-1)%256;UBRR1H = (fosc/16/baud-1)/256;UCSR1B = (1<<RXCIE1) | (1<<RXEN1) | (1<<TXEN1);// RXCIE RXEN TXEN PORTD |= BIT(PD4); //Set PD4DDRD |= BIT(PD4); //RXD1 enable.}/***uart0 transfer one char****/void putchar0(uchar c){PORTE &=~ BIT(PE2);delay_nms(5);while (!(UCSR0A&(1<<UDRE0)));UDR0 = c;delay_nms(5);//PORTE |= BIT(PE2);}/***uart0 transfer char strings***/void puts0(uchar *s){uchar k=0;CLI();//PORTE &=~ BIT(PE2);delay_nms(5);while (k<8){putchar0(*s);s++;k++;}PORTE |= BIT(PE2);delay_nms(3);SEI();}/****uart1 transfer one char **/void putchar1(unsigned char c){CLI();PORTD &=~ BIT(PD4);while (!(UCSR1A&(1<<UDRE1)));UDR1 = c;SEI();//PORTD |= BIT(PD4); //set as RX after TX. }/***uart1 transfer char strings**/void puts1(uchar *s){while (*s){putchar1(*s);}}/***uart0 RXD interrupt processing****//**************************************#pragma interrupt_handler uart0_RX_interrupt:19void uart0_RX_interrupt(void){//UCSR0B = 0x00; //disable uart0 while handling interrupt.buff = UDR0;PORTE &=~ BIT(PE2);delay_nms(3); //收转发设置控制引脚后,要延时,换高频晶振需加大此延时。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

eg:
UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为 1 位,数据位为 8 位
4、设置 UBRR:
UBRR 的设置和这些参数有关:U2X0,CPU 频率,波特率 当 U2X0 为 0 时,即异步正常模式 异步正常模式下 异步正常模式 ,UBRR 的计算公式: 1、U2X=0 时的公式计算 UBRR0L= (F_CPU/BAUDRATE/16-1)%256; UBRR0H= (F_CPU/BAUDRATE/16-1)/256; 2、U2X=1 时的公式计算
串口的初始化函数: void uart_init(void) //串口 0 初始化 { UCSR0B=0x00; //disable while setting baud rate UCSR0A=0B00000000; //Bit1 为 1 则倍速发送 U2X=0 UCSR0C=0x06; //B00000110 //奇偶模式无,八位数据位,一位停止位 UBRR0L=103; //B00011001 波特率:9600 Bps UBRR0H=0x00; //误差率:0.156% UCSR0B=0x98; } 初始化之后就是对 USART0 进行读写了. UCSR0A 的 Bit5-UDRE0 标志指出发送缓冲器 发送缓冲器 UDR0 是否准备好接收新数据,UDRE0 为 1 说明缓冲器 来产生寄存器空中断.复位后的 UDRE0 置位,表明发送器已经 为空,可以接收新数据,UDRE0 标志也可用来产生寄存器空中断 就绪: 当 UDRE0 为 1 时!(UCSR0A&(1<< UDRE0))为 0 void putchar(uchar c) //串口 0 发送字符 { while(!(UCSR0A&(1<< UDRE0))); //while(!(UCSR0A&32)); 表明发送器已经就绪。 表明发送器已经就绪。 UDR0=c; } 串口 0 发送字符串: void putstr(uchar *s) //串口 0 发送字符串 { while(*s) { putchar(*s); s++; } }
UCSR0C =(1<<UCSZ01)|(1<<UCSZ00); UBRR0L=(fosc/16/(baud+1))%256; UBRR0H=(fosc/16/(baud+1))/256; UCSR0B =(1<<RXEN0)|(1<<TXEN0); }
/*********************************************************************** ***** 函数功能:uart0 发送单字节数据 入口参数:c 出口参数: ************************************************************************ ****/ void putchar0(unsigned char c) { while (!(UCSR0A&(1<<UDRE0)));//表明发送器已经准备就绪 UDR0=c; } /*********************************************************************** ***** 函数功能:uart0 接收单字节数据 入口参数: 出口参数: ************************************************************************ ****/ unsigned char getchar0(void) { while(!(UCSR0A& (1<<RXC0)));//表明已经接收完毕 return UDR0; } /*********************************************************************** ***** 函数功能:uart0 发送字符串数据 入口参数:*s 出口参数: ************************************************************************ ****/ void puts0(char *s) { //将要发BAUDRATE/8-1)%256; UBRRH= (F_CPU/BAUDRATE/8-1)/256; //也可根据数据手册的[波特率设置的例子]查得 //UBRRL = 0x2F; //set baud rate lo //UBRRH = 0x00; //set baud rate hi 设置一般会有误差,误差计算方法为:Error[%]=(BaudRate_ture/BaudRate-1)*100%;
Atmega128 串口详解
Atmega128 有两个串口:USART0 与 USART1 以 USART0 为例 串口的初始化包括: 传输模式的选择:同步还是异步,默认为异步模式,可通过选择 USART 控制和状态寄存器 UCSR0C 中的 UMSEL 位来选择,UMSEL 为 0,是异步模式. 波特率的设置:通信的双方都必须有相同的波特率,波特率可以通过设置波特率发生寄存器 UBRR0 来确 定,UBRR0 为两字节 16 位的寄存器,可分为 UBRR0H 和 UBRR0L.同时起作用的还有 UCSR0A 中的波特 率加倍位 UX2,当 UX2 为 1 时设置的波特率加倍. 传输帧格式的设置:默认是 8 位数据位,一位停止位 发送接受的使能与中断:通过设置 UCSR0B 来根据需要选择接收或发送的使能和是否使用中断,对使用中 断的 USART 操作,初始化前要关闭中断 USART0 的控制和状态寄存器有:UCSR0A,UCSR0B,UCSR0C,波特率寄存器有 UBRR0,即 UBRR0H 和 UBRR0L,数据寄存器为 UDR0
5、然后就是设置 UCSR0B:
Bit7-RXCIE0 为接收结束中断使能,Bit6-TXCIE0 为发送结束中断使能,Bit4-RXEN0 为接收使 能,Bit3-TXEN0 为发送使能.一般情况下,接收使用中断方式,所以使用接收结束中断使能. UCSR0B=0B10011000 //发送接收使能,接收结束使能 还一种写法是 UCSR0B|=(1<< RXEN0)|(1<< TXEN0)|(RXCIE0); 如果更熟练,可以直接以 10 进制活 16 进制来设置这些寄存器: UCSR0B=0x98;或者 UCSR0B=152;
1、初始化:
设置波特率前,要关闭 USART0 的所有使用,包括使能和中断: UCSR0B=0B00000000; //关闭 USART0
2、设置 UCSR0A:
UCSR0A 能写的有 Bit0,Bit1,Bit6,其他 5 位为状态位.我们一般使用的有 Bit1-U2X0,当这一位为 1 时, 波特率的分频因子从 16 降到 8,能够有效的将异步通信模式的传输速率加倍,但是这一位仅对异步操作有影 响,使用同步操作时应将此位清零. UCSR0A=0B00000000; //不使用倍速发送
例程: 串口通信( 串口通信(USART0)
/*********************************************************************** ****/ /*串口 0 测试程序 /*目标器件:ATmega128 /*晶振:RC 8MHZ /*编译环境:ICCAVR 7.13A /*时间:2010 年 3 月 14 日*/ /*E-Mail:number007cool@ ****/ /*********************************包含头文件 ********************************/ #include<iom128v.h> #include<macros.h> /***********************************宏定义 **********************************/ #define fosc 8000000 //晶振 8MHZ #define baud 2400 //波特率 /*********************************************************************** ***** 函数功能:uart0 初始化程序 入口参数: 出口参数: ************************************************************************ ****/ */ */ */ */ */
/***********************************************************************
void uart0_init(void) { UCSR0B = 0x00; UCSR0A = 0x00; //关闭 UART00 //不使用倍速发送(异步) //数据位为 8 位 //异步正常情况下的计算公式 //接收使能和发送使能
串口通信( 串口通信(USART1) /*********************************************************************** ****/ /*串口 1 测试程序 /*目标器件:ATmega128 /*晶振:RC 8MHZ /*编译环境:ICCAVR 7.13 /*E-Mail:number007cool@ /*时间:2010 年 1 月 14 日 */ */ */ */ */ */
while (*s) { putchar0(*s); s++; } putchar0(0x0a);//回车换行 //putchar0(0x0d); } /*********************************************************************** ***** 函数功能:主程序 入口参数: 出口参数: ************************************************************************ ****/ void main(void) { unsigned char i; uart0_init();//UART0 初始化 puts0("HELLO!"); while(1) { puts0("test ok!"); } }
相关文档
最新文档