⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io的备注.c

📁 自己写的PWM 模拟比较等 AVR16的子程序 供大家参考
💻 C
字号:
我用的是ATmega8L 内部1MHz晶振 内部上拉电阻打开) 
  设AVR的两个I/O口A和B.通过电阻接在一起,作开关用:如下图 
           ------------------- 
     K     |                 | 
  __/ _____|A                | 
  |________|B                | 
           |                 | 
           |     ATMEGA8L    | 

     图中开关为K(如在51中则设A为1,B为0,K闭合则A被拉低。) 设两口接在一起为"+",结果为"="后的数据,高电平为"1",低电平为"0",输出为"出",输入为"入". 
     AVR的I/0口通过实验数据入下: 
     1.A(出,1)+B(出,1)=A(出,1),B(出,1) 
     2.A(出,1)+B(出,0)=AB间不接电阻,单片机定住(类似死机),此时AB相当于电源的正负极,接在一起造成短路.如有足够大的电阻,则工作正常. 
     3.A(出,1)+B(入,1)=A(出,1),B(入,1) 
     4.A(出,0)+B(入,0)=A(出,0),B(入,0) 
     5.A(出,1)+B(入,0)=A(出,1),B(入,1)    低被拉高 
     6.A(入,1)+B(入,0)=A(入,1),B(入,1)    低被拉高 
     7.A(入,1)+B(出,0)=A(入,0),B(出,0)    高被拉低 
     8.A(入,1)+GND=A(入,0)                高被拉低 
     9,A(出,1)+GND=定住(类似死机) 

     通过上面的实验,我们可以发现:5,6,7,8条可以利用来做按键. 
     以上是我懒得做实验折腾了好久(最后不得不做实验)而得来的.呵呵.累啊:) 

以下是例子:(刚从另外一个贴Copy过来 55怕被扣100分啊) 
    我刚学AVR一星期遇到了不少问题。弯路走的多多。下面例子让刚入们的新人少走弯路。我个人觉得比“D触发器做按键”的例子更容易让人理解。 
           -------------------  
     K     |                 |  
  __/ _____|PB0              |  
  |________|PB1              |  
           |                 |  
           |     ATMEGA8L    |  

//ATmega8L 内部晶振1MHz 编译器:CodeVisionAVR 
//注意PB0和PB1高输入输出及高低电平的设置,这是按键成功的关键。 
#include <mega8.h> 
#define uint unsigned int 
#define uchar unsigned char 
#define TRUE  1 
#define FALSE 0 

#define key PINB.0 

void delay()  
{ //延时 
  uint i; 
  for(i=0;i<3000;i++) 
  { 
    #asm("nop"); 
  } 
} 

uchar keyboard() 
{ //按键处理 
  if(!key) 
  {  //有键按下 
    delay();      //延时去抖动 
    if(key) return FALSE;        //假的按键。返回假 
    while(!key); //等待按键放开 
    return TRUE;  //是按键返回真 
  } 
  return FALSE; 
} 

void main(void) 
{ 
  PORTB=0x01;     //***PB0设为高电平1,  PB1设为低电平0   
  DDRB=0x02;      //***PB0设为输入,     PB1设为输出 

  SFIOR=0x00;     //开内部上拉电阻 
  OSCCAL=0xa7;    //时钟效准 

  while (1) 
  { 
    if(keyboard()) 
    { //处理按键 
      //...... 
    }         
  } 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -