Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Cruz_Ivan_Lab3.c
- *
- * Created: 2/17/2020 2:11:00 PM
- * Author : Ivan Cruz
- */
- #include <avr/io.h>
- #define F_CPU 16000000UL
- #define BAUD 9600 // define baud
- #define BAUDRATE ((F_CPU)/(BAUD*16UL)-1) // set UBRR value for baud rate
- #include <util/delay.h>
- void uart_init (void)
- {
- UBRR0H = (BAUDRATE>>8); // shift the register right by 8 bits
- UBRR0L = BAUDRATE; // set baud rate
- UCSR0B|= (1<<TXEN0)|(1<<RXEN0); // enable receiver and transmitter
- UCSR0C|= (1<<UCSZ00)|(1<<UCSZ01); // 8bit data format
- }
- void uart_transmit (unsigned char data) {
- while (!( UCSR0A & (1<<UDRE0))); // wait while register is free
- UDR0 = data; // load data in the register
- }
- unsigned char uart_recieve (void)
- {
- while(!((UCSR0A) & (1<<RXC0))); // wait while data is being received
- return UDR0; // return 8-bit data
- }
- // function to initialize UART
- int main()
- {
- char keypad[4][4] = {{'1', '2', '3', 'A'}, //4x4 keypad layout
- {'4', '5', '6', 'B'}, //based on the
- {'7', '8', '9', 'C'}, //tools given to us
- {'*', '0', '#', 'D'}}; // for lab
- uart_init();
- DDRD |= (1<<DDD4 | 1<<DDD5 | 1<<DDD6 | 1<<DDD7); // ddrd = output
- DDRB &= ~(1<<DDB0 | 1<<DDB1 | 1<<DDB2 | 1<<DDB3); //ddrb = input
- PORTB |= (1<<PORTB0) | (1<<PORTB1) | (1<<PORTB2) | (1<<PORTB3); // enables pull up
- while(1)
- {
- for(int i = 7; i>=4 ; i--){
- PORTD |= (1<<4|1<<5|1<<6|1<<7);
- PORTD &= ~(1<<i);
- for(int j =0; i<=3; j++){
- if(!(PINB & 1<<j)){
- uart_transmit(keypad[i-4][j]);
- _delay_ms(500);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement