반응형

// Serial 통신_Uart0_문자 1개



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
 * avr-1001.cpp
 *
 * Created: 2018-10-01 오전 9:23:35
 * Author : USER
 */ 
 
#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
 
 
#define FND_NUM0 0x3f
#define FND_NUM1 0x06
#define FND_NUM2 0x5b
#define FND_NUM3 0x4f
#define FND_NUM4 0x66
#define FND_NUM5 0x6d
#define FND_NUM6 0x7d
#define FND_NUM7 0x27
#define FND_NUM8 0x7f
#define FND_NUM9 0x6f
 
#define FND_SEL1 0x01
#define FND_SEL2 0x02
#define FND_SEL3 0x04
#define FND_SEL4 0x08
 
unsigned int fnd[10]= {FND_NUM0,FND_NUM1,FND_NUM2,FND_NUM3,FND_NUM4,FND_NUM5,FND_NUM6,FND_NUM7,FND_NUM8,FND_NUM9};
unsigned int fnd_sel[4= {FND_SEL1,FND_SEL2,FND_SEL3,FND_SEL4};
unsigned int count=0;
unsigned int sec=0;
 
 
void fnd_display(int num){
    int fnd1,fnd2,fnd3,fnd4;
 
    fnd1 = num%10;
    fnd2 = (num/10)%10;
    fnd3 = (num/100)%10;
    fnd4 = num/1000;
    
    PORTC = fnd[fnd1];
    PORTG = fnd_sel[0];
    _delay_ms(1);
    PORTC = fnd[fnd2];
    PORTG = fnd_sel[1];
    _delay_ms(1);
    PORTC = fnd[fnd3];
    PORTG = fnd_sel[2];
    _delay_ms(1);
    PORTC = fnd[fnd4];
    PORTG = fnd_sel[3];
    _delay_ms(1);
}
ISR(TIMER0_OVF_vect){
    TCNT0 =256-5;
    count++;
    if (count >1000){
        sec++; count=0;
    }
}
 
void init_uart0(){
    UCSR0B = 0x18// TXEN0 Transmitter Enable 
    UCSR0C = 0x06// UCSZn Bits Settings Reserved
    
    //Baud Rate Registers
    UBRR0H = 0
    UBRR0L = 207;
}
void putchar0(char c){
    while(!(UCSR0A & 0x20)); // Double the USART Transmission Speed
    UDR0 = c;
}
char getchar0(){
    while(!(UCSR0A & (1<<RXC0)));
    return UDR0;
}
 
int main(void)
{
    /* Replace with your application code */
    DDRC = 0xff// FND 출력설정
    DDRG = 0xff// FND_SEL 출력설정
    DDRA = 0xff;
    PORTA = 0x00;
    
    init_uart0();
    
    TIMSK = 0x01// R/W 선택 TIMER 0 사용
    TCCR0 = 0x04// 분주비 64
    TCNT0 =256-5// 0에서 시작 255가되어 256이 되면 OVF가 되어 인터럽트 구문을 실행한다.
    
    char c;
    sei();
    
    while (1
    {
        c =getchar0();
        putchar0(c);
    }
    return 0;
}
 
 
cs


반응형

'Project > j-kit-128-1실습' 카테고리의 다른 글

Sonar_GPS  (0) 2018.10.11
Serial 통신_ 문자열 전송  (0) 2018.10.01
FND_Display with Timer/Counter  (0) 2018.10.01
LED 제어  (0) 2016.02.26
FND 실습  (0) 2016.02.26

+ Recent posts