#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)마이크로프로세서' 카테고리의 다른 글
마프 ~10.10 코드 (0) | 2022.10.11 |
---|---|
마프01. (1) | 2022.10.04 |
CPU의 프로그램 실행 순서 (+CPU, ALU (0) | 2022.09.07 |