Binary format printing is not working.

Status
Not open for further replies.

baileychic

Advanced Member level 3
Joined
Aug 2, 2017
Messages
728
Helped
56
Reputation
112
Reaction score
57
Trophy points
28
Activity points
7,033
This is my code to print number in binary format but it is not printing properly. What is the problem ?


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <built_in.h>
 
#define UINT16_TO_BINARY_PATTERN_1 "<%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c>"
#define UINT16_TO_BINARY_PATTERN_2 "<%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c>\r\n"
 
#define UINT16_TO_BINARY(uint16_t) \
  (uint16_t & 0x8000 ? '1' : '0'), \
  (uint16_t & 0x4000 ? '1' : '0'), \
  (uint16_t & 0x2000 ? '1' : '0'), \
  (uint16_t & 0x1000 ? '1' : '0'), \
  (uint16_t & 0x0800 ? '1' : '0'), \
  (uint16_t & 0x0400 ? '1' : '0'), \
  (uint16_t & 0x0200 ? '1' : '0'), \
  (uint16_t & 0x0100 ? '1' : '0'), \
  (uint16_t & 0x0080 ? '1' : '0'), \
  (uint16_t & 0x0040 ? '1' : '0'), \
  (uint16_t & 0x0020 ? '1' : '0'), \
  (uint16_t & 0x0010 ? '1' : '0'), \
  (uint16_t & 0x0008 ? '1' : '0'), \
  (uint16_t & 0x0004 ? '1' : '0'), \
  (uint16_t & 0x0002 ? '1' : '0'), \
  (uint16_t & 0x0001 ? '1' : '0')
  
char txt[128];
unsigned int i = 0;
unsigned int my_16_bit_number = 0;
 
void main() {
 
    CM1CON0 = 0x00;
    CM2CON0 = 0x00;
    
    SLRCON = 0x00;
    
    ANSELA = 0x00;
    ANSELB = 0x00;
    ANSELC = 0x00;
    ANSELD = 0x00;
    ANSELE = 0x00;
    
    TRISA = 0x00;
    TRISB = 0x00;
    TRISC = 0x80;
    TRISD = 0x00;
    TRISE = 0x00;
    
    PORTA = 0x00;
    PORTB = 0x00;
    PORTC = 0x00;
    PORTD = 0x00;
    PORTE = 0x00;
    
    LATA = 0x00;
    LATB = 0x00;
    LATC = 0x00;
    LATD = 0x00;
    LATE = 0x00;
    
    UART1_Init(9600);
    Delay_ms(100);
    
    UART1_Write_Text("16-bit number    rotated number\r");
    UART1_Write_Text("-------------------------------\r");
    
    while(1) {
    
          for(i = 0; i < 65536; i++) {
             my_16_bit_number = i;
             sprintf(txt, UINT16_TO_BINARY_PATTERN_1, UINT16_TO_BINARY(i));
             UART1_Write_Text(txt);
             my_16_bit_number = (my_16_bit_number << 1) | (my_16_bit_number >> 15);
             sprintf(txt, UINT16_TO_BINARY_PATTERN_2, UINT16_TO_BINARY(my_16_bit_number));
             UART1_Write_Text(txt);
             Delay_ms(1500);
          }
    }
}

 

Attachments

  • uart communication.png
    34.7 KB · Views: 110

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…