반응형
// serial 통신_ 문자열
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | /* * 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> #include <stdlib.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; unsigned int num1Count,num2Count,num3Count,num4Count; void fnd_display(int num){ int fnd1,fnd2,fnd3,fnd4; fnd1 = num%10; fnd2 = (num/10)%10; fnd3 = (num/100)%10; fnd4 = num/1000; num1Count = fnd1; num2Count = fnd2; num3Count = fnd3; num4Count = fnd4; 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; } void putstr0(char *str){ while(*str){putchar0(*str++);} } int main(void) { /* Replace with your application code */ DDRC = 0xff; // FND 출력설정 DDRG = 0xff; // FND_SEL 출력설정 DDRA = 0xff; PORTA = 0x00; init_uart0(); char str1[10]; TIMSK = 0x01; // R/W 선택 TIMER 0 사용 TCCR0 = 0x04; // 분주비 64 TCNT0 =256-5; // 0에서 시작 255가되어 256이 되면 OVF가 되어 인터럽트 구문을 실행한다. sei(); while (1) { fnd_display(1234); itoa(num4Count,str1,10); putstr0(str1); itoa(num3Count,str1,10); putstr0(str1); itoa(num2Count,str1,10); putstr0(str1); itoa(num1Count,str1,10); putstr0(str1); } return 0; } | cs |
반응형
'Project > j-kit-128-1실습' 카테고리의 다른 글
Sonar_GPS - C#Window Form (0) | 2018.10.21 |
---|---|
Sonar_GPS (0) | 2018.10.11 |
Serial 통신_Uart0_문자 1개 (0) | 2018.10.01 |
FND_Display with Timer/Counter (0) | 2018.10.01 |
LED 제어 (0) | 2016.02.26 |