วันอาทิตย์ที่ 21 มิถุนายน พ.ศ. 2558

DEBUGกดปุ่มAVRSTUDIO ตอน1อธิบายPORTX,DDRX,PINX



DEBUGกดปุ่มAVRSTUDIO ตอน1อธิบายPORTX,DDRX,PINX
21/6/2558 SONGCHAI PRAPATRUNGSEE
DEBUGกดปุ่มAVRSTUDIO ตอน1อธิบายPORTX,DDRX,PINX

ในที่นี้X หมายถึง A,B,C,D,E
AVR =ไมโครคอนโทรลเลอร์ตระกูลหนึ่ง

PINX =PIN REGISTER
คือขาของไมโครคอนโทรเลอร์ตระกูลAVR

DDRX =DATA DIRECTION REGISTER
คือระบบนำทาง ให้ขาหรือPINXเป็นอินพุทหรือเอ้าท์พุท
1 =INPUT, 0 =OUTPUT

PORTX =SET VALUE REGISTER
คือการเซ็ทค่าให้เป็น1 หรือเป็น0
ถ้าเป็น1 จะมีไฟออกมาจากขาหรือPINX
ถ้าเป็น0 จะมีกราวด์หรือไม่มีไฟออกมาจากขาหรือPINX

PINX
หมายถึงขาของAVRนั่นเอง
มีไว้เพื่อทำการแอนด์
เพื่อให้รู้ถึงการเปลี่ยนแปลงของขา
และเมื่อมีการเปลี่ยนแปลงของขาหรือPINX
แล้วจะให้AVRทำอะไรก็เขียนสั่งAVRได้เลยครับ
  ถ้าPORXเป็น1 ก็จะมีไฟออกมาจากขาหรือPINX
แต่จะเป็นINPUT(ไฟอ่อน)
หรือเป็นOUTPUT(ไฟแรง)
ขึ้นอยู่กับDDRX ระบบนำทาง
ถ้าDDRXเป็น0 ก็จะเป็นINPUT(ไฟอ่อน)
ถ้าDDRXเป็น1 ก็จะเป็นOUTPUT(ไฟแรง)
  ถ้าPORXเป็น0 ก็จะมีกราวด์หรือไม่มีไฟ
ออกมาจากขาหรือPINX
แต่จะเป็นINPUT(ไม่มีไฟ)
หรือเป็นOUTPUT(กราวด์)
ขึ้นอยู่กับDDRX ระบบนำทาง
ถ้าDDRXเป็น0 ก็จะเป็นINPUT(ไม่มีไฟ)
ถ้าDDRXเป็น1 ก็จะเป็นOUTPUT(กราวด์)

SOURCE CODE
/*
 * AT.c
 *
 * Created: 20/6/2558 18:06:48
 *  Author: sc
 */


#include <avr/io.h>//REGISTER OF AVR
#define F_CPU 8000000//DEFINE CLOCK SPEED
#include <util/delay.h>//FOR DELAY
#define POWER_B (PINB&0X80)

int main(void)
{
      DDRA=255;//DDRX 1=OUTPUT,O=INPUT
      DDRB=0;//0=INPUT ALL PORTB
      PORTB=255;
      while(1)//LOOP FOREVER
      {
            if (POWER_B==0)
            {
                  PORTA=0XF0;
                  _delay_ms(1000);//Millisec
                  PORTA=0X0F;
                  _delay_ms(1000);
                  PORTA=0XF0;
                  _delay_ms(1000);
                  PORTA=0X0F;
                  _delay_ms(1000);
            }
      }

}

ไม่มีความคิดเห็น: