Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. /*
  2. * Cruz_Ivan_Lab3.c
  3. *
  4. * Created: 2/17/2020 2:11:00 PM
  5. * Author : Ivan Cruz
  6. */
  7.  
  8. #include <avr/io.h>
  9. #define F_CPU 16000000UL
  10. #define BAUD 9600 // define baud
  11. #define BAUDRATE ((F_CPU)/(BAUD*16UL)-1) // set UBRR value for baud rate
  12. #include <util/delay.h>
  13.  
  14. void uart_init (void)
  15. {
  16. UBRR0H = (BAUDRATE>>8); // shift the register right by 8 bits
  17. UBRR0L = BAUDRATE; // set baud rate
  18. UCSR0B|= (1<<TXEN0)|(1<<RXEN0); // enable receiver and transmitter
  19. UCSR0C|= (1<<UCSZ00)|(1<<UCSZ01); // 8bit data format
  20. }
  21.  
  22.  
  23. void uart_transmit (unsigned char data) {
  24. while (!( UCSR0A & (1<<UDRE0))); // wait while register is free
  25. UDR0 = data; // load data in the register
  26. }
  27.  
  28. unsigned char uart_recieve (void)
  29. {
  30. while(!((UCSR0A) & (1<<RXC0))); // wait while data is being received
  31. return UDR0; // return 8-bit data
  32. }
  33. // function to initialize UART
  34.  
  35. int main()
  36. {
  37. char keypad[4][4] = {{'1', '2', '3', 'A'}, //4x4 keypad layout
  38. {'4', '5', '6', 'B'}, //based on the
  39. {'7', '8', '9', 'C'}, //tools given to us
  40. {'*', '0', '#', 'D'}}; // for lab
  41.  
  42. uart_init();
  43. DDRD |= (1<<DDD4 | 1<<DDD5 | 1<<DDD6 | 1<<DDD7); // ddrd = output
  44. DDRB &= ~(1<<DDB0 | 1<<DDB1 | 1<<DDB2 | 1<<DDB3); //ddrb = input
  45. PORTB |= (1<<PORTB0) | (1<<PORTB1) | (1<<PORTB2) | (1<<PORTB3); // enables pull up
  46.  
  47. while(1)
  48. {
  49. for(int i = 7; i>=4 ; i--){
  50. PORTD |= (1<<4|1<<5|1<<6|1<<7);
  51. PORTD &= ~(1<<i);
  52.  
  53. for(int j =0; i<=3; j++){
  54. if(!(PINB & 1<<j)){
  55. uart_transmit(keypad[i-4][j]);
  56. _delay_ms(500);
  57. }
  58. }
  59. }
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement