/***THIS PROGRAM CREATED BY R2DGO FOR LEARNING BASIC THINGS ABOUT BYTES***/ volatile int BYTE; void setup() { DDRD = 0x00; // Set port D to the input mode PORTD = 0xFF; // Pullup all inputs to 1 /*Setup outputs for 7-segment indicators*/ int i; for (i = 8; i <= 13; i++) { pinMode (i, OUTPUT); } pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); pinMode(A4, OUTPUT); pinMode(A5, OUTPUT); } /*print digit function*/ /*segments initialization*/ void printDigit(int pos, int digit) { for (int i = 8; i <= 13; i++) { digitalWrite(i, HIGH); } digitalWrite(A0, HIGH); /*position initialization*/ digitalWrite(A1, LOW); digitalWrite(A2, LOW); digitalWrite(A3, LOW); digitalWrite(A4, LOW); digitalWrite(A5, LOW); digitalWrite(pos, HIGH); switch(digit) { case '0': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top digitalWrite(A0, LOW); //left top break; case '1': digitalWrite(9, LOW); //right bottom digitalWrite(13, LOW); //right top break; case '2': digitalWrite(8, LOW); //bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top break; case '3': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top break; case '4': digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(13, LOW); //right top digitalWrite(A0, LOW); //left top break; case '5': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(12, LOW); //top digitalWrite(A0, LOW); //left top break; case '6': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(A0, LOW); //left top break; case '7': digitalWrite(9, LOW); //right bottom digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top break; case '8': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top digitalWrite(A0, LOW); //left top break; case '9': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top digitalWrite(A0, LOW); //left top break; case 'A': digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(13, LOW); //right top digitalWrite(A0, LOW); //left top break; case 'B': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(A0, LOW); //left top break; case 'C': digitalWrite(8, LOW); //bottom digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(A0, LOW); //left top break; case 'D': digitalWrite(8, LOW); //bottom digitalWrite(9, LOW); //right bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(13, LOW); //right top break; case 'E': digitalWrite(8, LOW); //bottom digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(A0, LOW); //left top break; case 'F': digitalWrite(10, LOW); //middle digitalWrite(11, LOW); //left bottom digitalWrite(12, LOW); //top digitalWrite(A0, LOW); //left top break; } } void loop() { char buffer_hex[2]; char buffer_dec[3]; BYTE = PIND; sprintf(buffer_hex,"%02X",BYTE); printDigit(A5, buffer_hex[0]); delay(1); printDigit(A4, buffer_hex[1]); delay(1); sprintf(buffer_dec,"%03u",BYTE); printDigit(A3, buffer_dec[0]); delay(1); printDigit(A2, buffer_dec[1]); delay(1); printDigit(A1, buffer_dec[2]); delay(1); }