Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void UART_ConvertDistance(unsigned long n){
- // as part of Lab 11 you implemented this function
- short i = 0, j = 0;
- unsigned short str_len;
- unsigned char reverse_str[15];
- unsigned long m = n;
- if (m == 0) {
- str_len = 1;
- String[0] = 0x30;
- return;
- }
- while (m != 0) {
- reverse_str[j] = m % 10 + 0x30;
- m /= 10;
- j++;
- }
- str_len = j;
- for (j = str_len - 1; j >= 0; j--) {
- String[i] = reverse_str[j];
- // the last digit in reverse_str[10] is the first one in String[10]
- i++; // increase the index of String[10]
- }
- // second, go over each case
- // n has 1 digits
- if (n <= 9) {
- String[4] = String[0];
- String[0] = 0x30;
- String[1] = '.';
- String[2] = 0x30;
- String[3] = 0x30;
- String[5] = 0x20;
- String[6] = 'c';
- String[7] = 'm';
- }
- // n has 2 digits
- else if ((n >= 10) && (n <= 99)) {
- String[4] = String[1];
- String[3] = String[0];
- String[0] = 0x30;
- String[1] = '.';
- String[2] = 0x30;
- String[5] = 0x20;
- String[6] = 'c';
- String[7] = 'm';
- }
- // n has 3 digits
- else if ((n >= 100) && (n <= 999)) {
- String[4] = String[2];
- String[3] = String[1];
- String[2] = String[0];
- String[0] = 0x30;
- String[1] = '.';
- String[5] = 0x20;
- String[6] = 'c';
- String[7] = 'm';
- }
- // n has 4 digits
- else if ((n >= 1000) && (n <= 9999)) {
- String[4] = String[3];
- String[3] = String[2];
- String[2] = String[1];
- String[1] = '.';
- String[5] = 0x20;
- String[6] = 'c';
- String[7] = 'm';
- }
- // n has more than 4 digits (Overflow)
- else {
- String[0] = '*';
- String[1] = '.';
- String[2] = '*';
- String[3] = '*';
- String[4] = '*';
- String[5] = 0x20;
- String[6] = 'c';
- String[7] = 'm';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement