본문 바로가기
2학년/2-2)마이크로프로세서

마프 ~10.10 코드

by 소요이 2022. 10. 11.
728x90


#include <avr/io.h>
#include <util/delay.h>
#include <macros.h>

int main(void)
{
    DDRA=0xFF;
    DDRB=0x00;

    while(1)
    {
        if(PINB & 0x80)
        {PORTA=0xFF;}
        else
        {PORTA=0x00;}
        }
}

 

 

 

 

 

 

 

#include <avr/io.h>
#include <util/delay.h>

void main(void)
{
   //A포트에 LED, B포트에 스위치
    DDRA=0xFF; //DDR=1이면 해당 포트 출력으로 사용한다
    DDRB=0x00; //B포트의 모든 핀은 입력으로 사용한다
   //포트 DDR 0: 입력, 1: 출력
PORTB = 0x00; //1: 내부 풀업저항 사용하겠다.B에 0x00하면 내부풀업저항 사용 안하겠다.  
/* portb는 끊어진 상태라 값이 다음으로 넘어가지는 않는데, 안에 값은 넣어버리면 위에 and게이트로만
입력이 되어서 내부 풀업저항 사용하겠다고 됨 (in port LED switch 실험. 10페이지정도? 
이 때 PUD=1이 되면 걍 바로 내부풀업저항 disable됨, default = 0; 
이 PUD비트는 53개의 GPIOㅣ핀과 바로 적용됨 */
PORTA = 0x00;
int count=0;
unsigned char presentButton, lastButton = 1; //자료형: 1byte

   while(1)
   {
    presentButton = PINB & 0x80; //누르지않으면 80, 누르면 0 들어옴

    if ((presentButton==0x80)&& (lastButton==0x00))
{ count++;
  if(count==3) PORTA=0xFF;
if(count==4) {PORTA=0x00; count=0;}
}
lastButton=presentButton;
// _delay_ms(100); //채터링은 이런거 말고,, 커패시터 병렬로 연결해서 해결하자 
}
      /* if(PINB & 0x80)//bit 논리곱 : 버튼 입력이 들어와서 1111과 곱해서 1이 나와야 true 
      //입력은 PIN으로 나타냄.cf)출력은 PORT 레지스터 
      {PORTA=0xFF;} //출력을 5V(high) 내보낸다.
      else
      {PORTA=0x00;}//다 꺼
     */
}

'2학년 > 2-2)마이크로프로세서' 카테고리의 다른 글

221005  (1) 2022.10.05
마프01.  (1) 2022.10.04
CPU의 프로그램 실행 순서 (+CPU, ALU  (0) 2022.09.07