uint8_t ledArr[]={
0x00,
0x80, // 10000000
0xC0, // 11000000
0xE0, // 11100000
0xF0, // 11110000
0xF8, // 11111000
0xFC, // 11111100
0xFE, // 11111110
0xFF, // 11111111
0x7F, // 01111111
0x3F, // 00111111
0x1F, // 00011111
0x0F, // 00001111
0x07, // 00000111
0x03, // 00000011
0x01 // 00000001
};
int main()
{
DDRB = 0xFF;
uint8_t arrSize = sizeof(ledArr)/sizeof(ledArr[0]);
while(1)
{
for (uint8_t i = 0; i < arrSize; i++)
{
PORTB = ledArr[i];
_delay_ms(200);
}
}
}
#define LED_DDRDDRB
#define LED_PORTPORTB
void GPIO_LedInit();
void GPIO_Output(uint8_t data);
void ledLeftShift(uint8_t *data);
int main(void)
{
GPIO_LedInit(); // DDRB = 0xFF;
uint8_t ledData = 0x01;// 0b00000001;
while (1)
{
for (int i = 0; i < 7; i++)
{
ledLeftShift(&ledData);
_delay_ms(300);
}
}
}
// LED 포트 레지스터에 출력 방향 설정 함수
void GPIO_LedInit()
{
LED_DDR = 0xff;
}
// LED 포트 레지스터에 데이터를 출력하는 함수
void GPIO_Output(uint8_t data)
{
LED_PORT = data;// data 값을 portb 에 출력
}
// LED를 좌측으로 이동하는 함수
void ledLeftShift(uint8_t data)
{
data = (data >> 7) | (data << 1);
GPIO_Output(*data);
}
// LED를 우측으로
void ledRightShift(uint8_t data)
{
data = (data << 7) | (data >> 1);
GPIO_Output(*data);
}

int main(void)
{
DDRA =0xff; //0b11111111 모두 출력으로 설정한다.
uint8_t FND_Number[]
={0x3F, 0x06, 0x5B, 0x4F,0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x67};
int count =0; //지역변수 count, 초기값 0
DDRA = 0xff; //A 포트 출력 설정
while (1)
{
PORTA = FND_Number[count];
count = (count+1)%10;
_delay_ms(200);
}
}
#define FND_DATA_DDR DDRC // 데이터 방향
#define FND_SELECT_DDR DDRG // 디지트 방향
#define FND_DATA_PORT PORTC // 데이터 출력
#define FND_SELECT_PORT PORTG // 디지트 출력
void FND_Display(uint16_t data); // 출력함수, 4자리수 -> 16비트임
int main(void)
{
FND_DATA_DDR = 0xff; // 데이터 출력 설정
FND_SELECT_DDR = 0xff; // 디지트 출력 설정
FND_SELECT_PORT = 0x00; // 디지트 출력 0V 로 시작
uint16_t count = 0; // 카운트 갯수 증가
uint32_t timeTick = 0; // 시간을 셀수 있는 변수 (틱)
uint32_t prevTime = 0; // 이전 시간을 저장하는 변수
while (1)
{
FND_Display(count); //출력 함수 호출 -> 카운트값이 증가
if(timeTick - prevTime > 100) // 100ms 지날때마다 카운트 1증가
{
prevTime = timeTick; // 현재시간을 저장
count++;
}
_delay_ms(1); // 딜레이 1ms
timeTick++; // 시간을 세는 변수 1증가
}
}
void FND_Display(uint16_t data)
{
static uint8_t position = 0; // 디지트 선택 변수
uint8_t fndData[]=
{0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x67};
switch (position)
{
case 0:
// 첫번째 자리수를 표기 하기 위해
// 1번핀 LOW, 2,3,4번핀 HIGH
FND_SELECT_PORT &= ~(1<<0);
// FND_SELECT_PORT = FND_SELECT_PORT & ~(1<<0);
FND_SELECT_PORT |= (1<<1) | (1<<2) | (1<<3);
// FND_SELECT_PORT = FND_SELECT_PORT |(1<<1) | (1<<2) | (1<<3);
// 입력된 데이터의 천의 자리를 구하기 위해
FND_DATA_PORT = fndData[data/1000];
break;
case 1:
FND_SELECT_PORT &= ~(1<<1);
FND_SELECT_PORT |= (1<<0) | (1<<2) | (1<<3);
FND_DATA_PORT = fndData[data/100%10];
break;
case 2:
FND_SELECT_PORT &= ~(1<<2);
FND_SELECT_PORT |= (1<<0) | (1<<1) | (1<<3);
FND_DATA_PORT = fndData[data/10%10];
break;
case 3:
FND_SELECT_PORT &= ~(1<<3);
FND_SELECT_PORT |= (1<<0) | (1<<1) | (1<<2);
FND_DATA_PORT = fndData[data%10];
break;
}
position++; //다음 자리수 이동
position = position % 4;
}
주파수와 주기


여기서 보시면 ctc 모드가 있으니까
컨베어 매치가 있으면 토글을 할겁니다. 이 이야기가 무엇이냠ㄴ 이렇게 ocr값을 줬을 때 하이를 줬으면 로우가 나오고 ....
컴01을
비트는 비교일치가 발생하면 설정됩니다
ocf0은 하드웨어에 의해 지워집니다 또는 플래그에 논리 1을 쓰면 지워집니다.



tccr0 타이머 카운트 레지스터를 운영하는 방법과 구성을 설명하겠습니다.
tccr0구성은 FOC0,WGM00,COM01,COM00,WGM01,CS02,CS01,CS00로 있으면

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB =0x10; //0b00010000, pb4를 출력 설정
TCCR0=0x1c; //0b00011100
//TCCR0 |=(1<<
OCR0=124;
while (1)
{
while((TIFR & 0X02)==0);
TIFR =0x02;
OCR0 =124;
}
}

deepl:원서 번역 사이트
draw.io:그래프 그리기 사이트
c++code style guide
https://google.github.io/styleguide/cppguide.html
//
ctc모드 설명 노란색 선을 그어주면 반전이 일어난다(ocr선)
똑같이 ctc모드인데
노말포트 ㅗ퍼레이션
com01 com00
0 0
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB |=(1<<4); //PB4 output setting
/* Replace with your application code */
TCCR0 |=(1<<WGM01) |(1<<WGM00)| (1<<COM01)|(1<<CS02)|(1<<CS01);
//OCR0=127;
while (1)
{
for (uint8_t i = 0; i < 255; i++)
{
OCR0 = i;
_delay_ms(10);
}
}
}
오실로스코프 패널 사용방법

1좌측 메뉴판(파란색상자)의 세부 설정을 조정해주는 컨트롤 키
2주파수 활동 시작 / 정지
3자동설정: 최적의 보기 세팅을 해줌
4주파수 파장을 보기 위한 반응속도 기준선을 이동
5주파수 파장을 보기 위한 반응속도 단위 기준 조정 버튼(5.00ms->2.00ms)
6프로브 조절기기
7세이브파일 설정
8주파수 파장을 보기 위한 전압 기준선을 이동
9주파수 파장을 보기 위한 격자 상의 전압 단위 기준 조정 버튼(2.00v->5.00v)
10.전압과 빈도를 읽어주는 기계:프로브

11기준 전압
12기준 반응속도
13실 반응 전압
14실 반응 속도
+!: 노란색 선은 주파수 파형
st.com
비번 @@Jo58629396