2. SERIALIZING DATA
• SERIALIZING DATA IS A WAY OF SENDING A BYTE OF DATA ONE
BIT AT A TIME THROUGH A SINGLE PIN OF MICROCONTROLLER.
• DATA SERIALIZING FOR BYTE TRANSFER CAN BE DONE BY TWO
WAYS
3. DATA SERIALIZING
1. BY USING THE SERIAL PORT.
HERE, THE PROGRAMMERS HAVE VERY LIMITED CONTROL OVER THE SEQUENCE OF
DATA TRANSFER.
2. BY TRANSFER 1 BIT DATA AT A TIME AND CONTROL THE SEQUENCE OF DATA AND
SPACES IN BETWEEN THEM. NEW GENERATION DEVICES SUCH AS LCD, ADC & ROM, THE
SERIAL VERSIONS OF THESE DEVICES ARE BECOMING POPULAR SINCE THEY TAKE LESS
SPACE ON A PRINTED CIRCUIT BOARD.
4. SERIALIZING A BYTE OF DATA
• SERIALIZING DATA IS ONE THE MOST WIDELY USED APPLICATION.
• HERE THE CY FLAG STATUS CAN BE MOVED TO ANY PIN OF PORTS P0-P3.
• USING THIS CONCEPT, TRANSFER A BYTE OF A DATA SERIALLY (1 BIT AT A TIME)
REPEATING THE FOLLOWING SEQUENCE 8 TIMES AN ENTIRE BYTE TRANSFER
5. MOV A,#41H
SETB P2.1
SETB P2.1
MOV R5,#8
RRC A
MOV P2.1,C
DJNZ R5, HERE
SET P2.1
SETB P2.1
HERE:
Q:- write a prog. To transfer value 41H serially ( 1 bit at time)via pin
P2.1. put 2 high at the start and end of the data.
6. SWAP A
• SWAP INSTRUCTION IS ONLY WORKS ON ACCUMULATOR(A).
• IT SWAPS THE LOWER NIBBLE & THE HIGHER NIBBLE.
• THE 4 BITS ARE PUT INTO THE HIGHER 4 BITS, & THE HIGHER 4 BITS ARE PUT INTO THE
LOWER 4 BITS.
7. Q:- PORT LINES P0.0-P0.3 ARE USED TO TAKE 4 BIT
DATA FROM I/P DEVICE. THIS DATA IS TO BE
DISPLAYED ON 4 LEDS CONNECTED TO PORT LINES
P1.4-P1.7.
• SOL:-
MOV P0,#0FFH
MOV A,P0
ANL A, #0FH
SWAP A
MOV P1,A
8. ASCII NUMBERS
• AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE, IS A CHARACTER
ENCODING STANDARD FOR ELECTRONIC COMMUNICATIONS.
• MOST MODERN CHARACTER-ENCODING SCHEMES ARE BASED ON ASCII, ALTHOUGH
THEY SUPPORT MANY ADDITIONAL CHARACTERS.
• THE KEY “0” IS ACTIVATED, 011 0000(30H) IS PROVIDED TO THE COMPUTER.
• BCD NUMBERS ARE UNIVERSAL, ALTHOUGH ASCII IS STANDARD IN US.
• MOST I/O DEVICES USE ASCII.
9. ASCII TO PACKED BCD CONVERSION
• TO CONVERT ASCII TO PACKED BCD, IT IS 1ST CONVERTED TO UNPACKED BCD (
TO GET RID OF THE 3) & THEN COMBINED TO MAKE PACKED BCD.
• FOR EX:- 4 & 7 THE KEYBOARD GIVES 34 & 37 RESPECTIVELY. THE GOAL IS TO
PRODUCE 47H OR “0100 0111” WHICH IS PACKED BCD.
10. CONVERT ASCII TO PACKED BCD
MOV A, #4
MOV R1,#7
ANL A,#0FH
ANL R1,#OFH
SWAP A
ORL A,R1
11. PACKED BCD TO ASCII
• MANY SYSTEMS HAVE WHAT IS CALLED A REAL-TIME CLOCK (RTC). THE RTC
PROVIDES THE TIME OF DAY (HOUR, MINUTE, SECOND) AND THE DATE (YEAR,
MONTH, DAY) CONTINUOUSLY, REGARDLESS OF WHETHER THE POWER IS ON OR
OFF . HOWEVER, THIS DATA IS PROVIDED IN PACKED BCD. FOR THIS DATA TO BE
DISPLAYED ON A DEVICE SUCH AS AN LCD, OR TO BE PRINTED BY THE PRINTER,
IT MUST BE IN ASCII FORMAT.
• TO CONVERT PACKED BCD TO ASCII, IT MUST FIRST BE CONVERTED TO
UNPACKED BCD. THEN UNPACKED BCD IS TAGGED WITH 011 0000(30H)
12. ASSUME THAT REGISTER A HAS PACKED BCD, WRITE A
PROGRAM TO CONVERT PACKED BCD TO TWO ASCII NUMBERS
AND PLACE THEM IN R2 AND R6.
MOV A,#29H
MOV R2,A
ANL A,#0FH
ORL A,#30H
MOV R6,A
MOV A,R2
DATA
ANL A,#0F0H
RR A
RR A
RR A
RR A
ORL A,#30H
MOV R2,A
13. PACKED BCD TO ASCII CONVERSION IN C
Q:- CONVERT PACKED BCD NO. 37 H TO ASCII AND DISPLAY THE BYTES
ON PORT 0 & 1.
#include<reg51.h>
void main()
{
unsigned char dat = 0x37;
P0= (dat & 0xf0) + 0x30;
P1 = (( dat & 0xf0) >>4) + 0X30;
While(1)
}
14. ASCII TO PACKED BCD CONVERSION IN C
• CONVERT ASCII DIGIT 3 & 8 TO PACKED BCD & DISPLAY IT ON PORT0.
#include<reg51.h>
void main()
{
unsigned char dat1= 0x33;
unsigned char dat2= 0x38;
PO = (dat2 & 0x0F) + (( dat1 & 0x0F) <<4);
while(1)
}