请问用在51单片机上的程序直接编程到AVR的单片机里可以吗?

来源:百度知道 编辑:UC知道 时间:2024/06/03 04:24:55
如果不可以,那要怎么做啊

不可以,连长的最像51的mega16都不可以,首先avr不可以直接位寻址。如p1.1=0;可以这么写,但不可以写pa.1=0;虽然都可以用C语言编写。
AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。
DDRn PORTn PINn 解释:n为端口号:ABCDE
DDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。
PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。
PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。
当引脚配置为输入时,若PORTxn 为"1“,上拉电阻将使能。内部上拉电阻的使用在键盘扫描的时候还要说到。
端口更详细功能及介绍以及端口第二功能请参考数据手册。
端口引脚配置
DDxn PORTxn PUD (in SFIOR) I/O 上拉电阻说明
0 0 X 输入 No 高阻态 (Hi-Z)
0 1 0 输入 Yes被外部电路拉低时将输出电流
0 1 1 输入 No高阻态(Hi-Z)
1 0 X 输出 No输出低电平 ( 漏电流)
1 1 X 输出 No输出高电平 ( 源电流)

不可以,他们的内核不一样,不过整体的程序框架不用改,细节修改就可以了

因为指令不一样,所以需要改相应的命令重新编译就可以了。

使用C语言的源码,在51的编译器和AVR的编译器上分别编译。

不可以,对应端口操作。AVR对应端口需要初始化.还有对应寄存器的初始化及操作都不一样,但是主要功能你有了,对应改改就可以通过ICC AVR编译一下后下载到AVR中去的。