ANTARMUKA
MIKROKONTROLER
DAN IOT
PERCOBAAN 8
KOMUNIKASI
SERIAL ASINKRON
Tujuan
2
MODUL 8 USART
1) Buat Project baru dibawah group project bernama lcd dengan sub directory bernama lcd dibawah group
project directorydan berinama, misal : usart.
2) Jalankan Programmers Notepad. Pilih folder yang tadi dibuat : usart..beri namafile
misal : usart.,
3) Edit main program dibawah ini
a. #include <avr/io.h>
b. #include <util/delay.h>
c. #include "asinkron.h"
d. int main(void)
e. {
i. char x='0';
ii. uart_init(9600,12000000);
iii. while (x<='z')
iv. {
v. put_char(x++);
vi. _delay_ms(1000);
vii. if((x=='Z'+1) || (x=='_'+2)||(x=='9'+1) || (x=='@'+1))
viii. {
1. put_char('\r');
2. put_char('\n');
ix. }
x. }
xi. return 0;
xii. }
3
MODUL 8 USART
a.#include <avr/io.h>
b.#include <stdio.h>
c. #include <util/delay.h>
d.#include <avr/interrupt.h>
e.#include "asinkron.h"
f. char buff[200];
g. struct date{
i. int day;
ii. int month;
iii. int year;};
h.int main(void)
i. {
j. struct date today={27,2,2023};
i. uart_init(9600,11059200);
ii. sprintf(buff,"Date to day is: %d-%d-%d\r\n",today.day,today.month,today.year);
iii. transmit(buff);
iv. //printf("Date to day is: %d-%d-%d\r\n",today.day,today.month,today.year);
v. while (1);
vi. return 0;
vii. }
1. #ifndef asinkron_H_
2. #define asinkron_H_
3. void uart_init(long int baud,long int fclock);
4. void put_char(char t);
5. void transmit(char *st);
6. void put_char(char t)
7. {
8. while(!(UCSR0A&0x20));
9. UDR0=t;
10. }
11. void uart_init(long int baud,long int fclock)
4
MODUL 8 USART
13. UBRR0L=(fclock/(16*baud)-1);
14. UBRR0H=((fclock/(16*baud)-1)>>8);
15. UCSR0B=0x98;
16. UCSR0C=0x86;
17. }
18. void transmit(char *st)
19. {
20. while(*st){
a. while(!(UCSR0A&0x20));
b. UDR0=*st;
c. *st++;
21. }}
22. #endif
23.
VII. Kesimpulan
Tulis kesimpulan untuk percobaan 8.