You are on page 1of 3

Friday, June 16, 2017 8:09 AM

#include <mega16.h>
#include <delay.h>
//#include <stdio.h>

#define myfosc 1000000


#define myBaud 4800
#define myU2X 0
#define myUBRR myfosc/(16*myBaud)*(myU2X+1) - 1
#define ENTER UDR=10; delay_ms(2); UDR=13; delay_ms(2);
#define EndofText UDR=3; delay_ms(2);

#define sizeBuf 50
#define ETX 3
#define ACK 6
#define statusCetak 1
#define statusFull 2

struct buffer{
unsigned char sBuffer[sizeBuf];
unsigned char bufPointer;
unsigned char status;
}penampung;

char dec[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,


0xFF,
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xA0,0x83,0xA7,0xA1,0x84,0x8E,0x90,0x8B,0xCF,0xF1,0x8D,0xC7,0xB0,
0xAB,0xA3,0x8C,0x98,0xAF,0x92,0x87,0xE3,0x9D,0x86,0x89,0x91,0xA4};

interrupt [USART_RXC] void usart_rx_isr(void)


{
char status,data;
status = UCSRA;
data = UDR;
//PORTC = data;
if (data >= ' ')
if (penampung.bufPointer<(sizeBuf-1)) {
penampung.sBuffer[penampung.bufPointer] = data;
penampung.bufPointer++; }
else {
penampung.status = statusFull;
penampung.sBuffer[penampung.bufPointer] = 0; }
else
switch (data) {
case ETX : if (penampung.status != statusFull) {
penampung.sBuffer[penampung.bufPointer] = 0;
penampung.bufPointer = 0;
penampung.status = statusCetak; }
break;
case ACK : penampung.sBuffer[penampung.bufPointer] = 0;
penampung.bufPointer = 0;
penampung.status = statusCetak;
break;
}
}

-1-
Friday, June 16, 2017 8:09 AM

void main(void)
{
unsigned char c=0;
char s1[]="MIKROKONTROLER II";
char s2[]="JTD - 2E";

UCSRA=0b00000000;
UCSRB=0b10011000;
UCSRC=0b10000110;
UBRRH=0x00;
UBRRL= myUBRR;// 0x0C;

#asm("sei")

PORTA = 0b00001111;
DDRA = 0b00000000;
DDRB = 0b11111111;
PORTB = 255;//blank
PORTD = 0b00001100;
DDRD = 0b00000000;

penampung.bufPointer=0;
while (1)
{
if (penampung.status == statusCetak) {
char c=penampung.sBuffer[0], index=0;
while (c != 0){
PORTB=dec[c-' ']; delay_ms(500);
PORTB=255; delay_ms(200);
c=penampung.sBuffer[++index];
}
penampung.status = 0;
}
if (PINA.0 == 0) {
for(c=0; s1[c]!=0;c++){
UDR = s1[c]; delay_ms(2); }
//puts(s1);
EndofText
while(PINA.0 == 0); }

if (PINA.1 == 0) {
for(c=0; s2[c]!=0;c++){
UDR = s2[c]; delay_ms(2); }
EndofText
//printf("%s%c",s2,ETX);
while(PINA.1 == 0);
}
if (PINA.2 == 0) {
for(c=0; s1[c]!=0;c++){
UDR = s1[c]; delay_ms(2); }
for(c=0; s2[c]!=0;c++){
UDR = s2[c]; delay_ms(2); }
EndofText
//printf("%s%s%c",s1,s2,ETX);
while(PINA.1 == 0); }

if (PINA.3 == 0) {

-2-
Friday, June 16, 2017 8:09 AM

UDR = ACK; delay_ms(2);


putch(ACK); }
}

-3-

You might also like