跨入AVR

序:      

       以前一直用的是STC51 + 飞思卡尔xs128组合,简单的就用51写,复杂的用xs128,对于AVR、PIC、STM系列是只闻其声,不见其人。 最近因为要做飞思卡尔电磁磁场发生器而开始第一次接触AVR,顿有相见恨晚之感。

       简单点说,有内部上拉电阻,引脚30ma的拉电流和灌电流,内部硬件PWM和ADC等,而且价格也不贵,我正式决定用atmege8代替51。

  

  对端口操作:

   AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。
   DDRn PORTn PINn 解释:n为端口号:ABCDE
   DDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。
   PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。
   PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。
  

   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               输出高电平 ( 拉电流)

原文地址:https://www.cnblogs.com/pang123hui/p/2312386.html