找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机程序转AVR的方法

[复制链接]
跳转到指定楼层
楼主
ID:296052 发表于 2018-3-23 16:54 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将 C51 向 ICCAVR的转换进行一次总结
1、 头文件
对C51中定义寄存器的头文件如 reg51.h at89x51.h等替换成相应的 AVR头文件 如 io8515.h io2313.h等
2、 中断处理函数
在 C51 中以 interrupt 关键字来说明某一个函数为中断处理函数 在 ICCVAR 中可采用#pragma interrupt_handler预处理命令在程序开始处声明 具体用法如下:
#pragma interrupt_handler <中断处理函数名> <中断向量号>
注意 对原 C51 源程序中的 interrupt 和 using关键字应当删除
3 、对 C51 中的 bit 和 sbit 数据类型的处理
在 ICCAVR中不支持 bit 和 sbit数据类型 对这两种类型可用 unsigned char来代替对有关位运算用标准 C 的位运算功能进行处理 也可采取在线汇编处理
4 、对中断系统 定时器初始化
需重新根据相应控制寄存器的功能给其赋值 方法与 C51 相同 具体如下 对 MCS51中 TMOD TCON的处理改为对 AVR的 TCCR0 TCCR1A TCCR1B TIFR的处理
对 MCS51 中 IE IP的处理改为对 AVR中 GIMSK TIMSK MCUCR SREG
的处理对 MCS51 中 IE IP的处理改为对 AVR中 GIMSK TIMSK MCUCR SREG的处理
5 将原 C51中有关对看门狗电路 外部 EEPROM的处理改为对 AVR芯片内部看门狗电路 内部 EEPROM的处理
6 、对 MCS51UART 的初始化改为对 UCR和 UBRR和被始化
7、 如果使用片外 SRAM 应当对 MCUCR初始化如果有引脚作为输出引脚使应当对其方向寄存器进行初始化
8、 对 C51中符合 ANSI标准的 C语言 原则上不需要进行修改 除非为了程序结构的优化

发自我的华为手机

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:33897 发表于 2018-3-28 10:39 | 只看该作者
谢谢分享  楼主辛苦了
回复

使用道具 举报

板凳
ID:380304 发表于 2018-7-28 21:11 | 只看该作者
新手的学习,谢谢分享
回复

使用道具 举报

地板
ID:176854 发表于 2018-8-10 17:08 | 只看该作者
学习一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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