历史上的今天
今天是:2024年10月28日(星期一)
2019年10月28日 | 51单片机程序转AVR的方法
2019-10-28 来源:51hei
将 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语言 原则上不需要进行修改 除非为了程序结构的优化
史海拾趣
|
LDO LDO是low dropout regulator,意为低压差线性稳压器,是相对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯片都要求输入电压要比输出电压高出2v~3V以上,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如 ...… 查看全部问答> |
|
最近一段时间,接触了好几个具有 I2C 接口的从设备器件; 也对 I2C 的 WinCE 流驱动也有所了解。 开始用【查询】方式实现了一个 I2C 流驱动; 现在准备用【中断】方式实现 I2C 流驱动; 但是看了好几遍【2410数据手册】,都没有看明白; 2410 ...… 查看全部问答> |
|
安装了IAR5.2,破解失败,怎么回事啊,用5.2的朋友进来看看 Fatal Error[Cp001]: Copy protection check, No valid license found for this product对程序进行编译就会有这个错误,用软件破解了啊,也在网上查了,但是还是没有解决我卸载好几遍了希望高手帮助啊… 查看全部问答> |
|
在线MSP430编辑编译无需本地电脑安装CCS或IAR之类开发环境 在线MSP430编辑编译无需本地电脑安装CCS或IAR之类开发环境看了一下,支持代码彩色显示编写完了以后还可以在其网站服务器上进行编译,然后可以下载编译后的可烧写文件。使用google帐户登陆,无需注册。对于帐户安全,一般可以放心,使用OpenId方式来 ...… 查看全部问答> |
|
浴室的排风扇一直开着的话一方面浪费电源,另一方面不利于周围洗浴温度的上升。使用这样一款浴室湿度调节器,就可以及时的调节浴室内的湿度,使其控制在一个可视的,温度舒适的合理范围内。这样既可以节约能源又可以,避免浴室湿度过大视线受阻带来 ...… 查看全部问答> |




