PSW of 8051 microcontroller
In this blog, PSW of 8051 microcontroller would be discussed. To access complete series of 8051 click here.
In the last tutorial, the architecture of 8051 was explained. In this tutorial one part of architecture PSW( program status word ) also known as Flag register of 8051 microcontrollers.
Flag register in 8051 microcontroller is a 8-bit register and it is bit addressable ( refer previous tutorials for what is bit addressable ) .
CY:
This is known as carry flag. This says whether there is a carry out of MSB or not.
E.g: 1000 1101
1011 1001 Let’s add both bytes
= 0011 0110 There is a carry out of MSB. Therefore in this case CY=1.
AC:
This flag stands for an auxiliary carry. It is given as 1 whenever there is a carry from LN to HN. LN and HN stands for lower nibble and higher nibble. As byte stands for 8 bits, similarly nibble stands for 4 bits. Lower nibble is 0-3 bits and higher nibble is 4-7 bits.
If seen in the above example there was a carry from 3rd bit to 4th bit. So in the above case AC=1.
PARITY:
If there are even number of 1s in the result then the parity will be one, and if there are odd number of 1s then , parity=1
Eg= 1010 1101 , here there are 5 ones, therefore parity =1
X:
This is a don’t care flag. It has nothing to do with.
OVR:
This is an overflow flag.
There are two types numbers
- Signed
- Unsigned
Unsigned:
These is another flag in PSW of 8051 microcontroller. This is a 8 bit positive number which ranges from 0 to 255. In hexadecimal it’s range is from 00 to FF. In the OVR flag, it has nothing to do with unsigned numbers. Only signed numbers are considered in the OVR flag.
Signed:
This is also a 8-bit number which is equally distributed among +ve and -ve numbers. By considering MSB , it is decided whether it is a positive or negative number. If MSB=1 , it is a negative number or else a positive number.
Eg: 1011 0011 is -ve
0111 1001 is +ve
So it’s positive range is from 0 to 127 [ 00 to 7F (in hexadecimal ) ], it consists of 128 +ve values.
It also has 128 negative numbers ranging from -1 to -128 [ -01 to -80 ( in hexadecimal ) ].
Whenever a negative number is saved, it is saved as it’s 2’s complement. To access the number we have to make its 2’s complement again. A number is considered as negative whenever its MSB is 1, and its 2’s complement is the actual negative number.
For eg: 1011 0011
It is a negative number and its 2’s complement is 0100 1101, which is equivalent
to 4D ( hexadecimal ) . so it is -4DH.
So there is a well defined limit for signed numbers ( 00 to 7F and -01 to 80 ) in PSW of 8051. If the result or operands exceeds the limit, it is known as overflow. If there is overflow, then the MSB would show incorrect values, if there is overflow then
MSB = 1 , then it is +ve number
MSB = 0 , then it is -ve number. This is the reverse with the original case.
How does the processor comes to know about overflow ?
XOR operation is performed on C6 and C7 carry. C0 is carried from 0th bit to 1st bit and so on. If the XOR operation gives output as 1, then the operation is going out of the limit.
F0 :
This is a user defined bit flag, where users can store any data.
RS1 and RS0 :
All the bit flags in PSW of 8051 microcontroller are named as PSW.0, PSW.1 ……. PSW.7 .
Internal RAM of 8051 is 128 bytes out of which 32 bytes are stored in registers( 8085, 8086 has 7,8 registers only ). These all 32 registers are divided into 4 banks, each bank has 8 registers starting from R0 to R7.
Let’s assume there is an operation that should be performed on R1, then how it decides from which bank the register is selected?
This is performed based on banks
RS1 | RS0 | Bank |
0 | 0 | Bank 0 |
0 | 1 | Bank 1 |
1 | 0 | Bank 2 |
1 | 1 | Bank 3 |
By setting the values of RS1 and RS0 , we can select the register.
SETB PSW.3
CLR PSW.4
This instruction stands for RS1 = 1 , and RS0 = 0, which means bank 2.
Why are registers divided into 4 banks, instead of 32 separate locations??
If every register has 32 unique addresses then each instruction requires 32 opcodes( one opcode for one unique address ), Therefore for one instruction it consumes 32 opcodes and there are only 256 opcodes and there are 111+ instructions ( add, sub, move, OR…… ) , in this way it would require ( 32 x 111 = 3552 opcodes ). So these registers are divided into 4 banks , so that only 8 opcodes are used instead of 32 opcodes.
E.g: Let’s make an arithmetic operation and analyze all the flag values.
In the second example, a signed overflow event had occurred, even though MSB=1, it is a positive number as in overflow condition MSB gives the opposite sign. This was all about flag register or PSW of 8051 microcontroller.
In the upcoming tutorial we would learn about memory organisation
Also read CPSR ( Sort of Flag register in ARM )
Also read flag register of 8086 microprocessor
To understand more about signed and unsigned numbers visit this wikipedia page.
Thank you for sharing your thoughts. I really appreciate your efforts and I am waiting for your further write upss thanks once again.
thank you very much! we are uploading content on every alternate day on different topics
Thank you for sharing your thoughts. I really appreciate your efforts and I am waiting for your further write upss thanks once again.
Hello! Someone in my Myspace group shared this website with us so I came to give it a look. I’m definitely loving the information. I’m book-marking and will be tweeting this to my followers! Terrific blog and brilliant design.
Thank You. You can explore the other sections too.
Thanks for your personal marvelous posting! I really enjoyed reading it, you may be a great author. I will make certain to bookmark your blog and will often come back later on. I want to encourage you to ultimately continue your great posts, have a nice day!
Great to hear from you. Thanks a lot.
Good blog you have here.. It’s hard to find high quality writing like yours nowadays. I honestly appreciate individuals like you! Take care!!
Thank You. Check out the other sections too.
Hey there this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience. Any help would be enormously appreciated!
You can mail us at info@roboticelectronics.in about your queries.
Woah! I’m really digging the template/theme of this website. It’s simple, yet effective. A lot of times it’s tough to get that “perfect balance” between superb usability and visual appearance. I must say you have done a very good job with this. Additionally, the blog loads very quick for me on Opera. Exceptional Blog!
Thanks a lot. Our exceptional technical team always works to keep our blog updated and fast loading.
I’ve been surfing online more than 4 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. Personally, if all site owners and bloggers made good content as you did, the web will be a lot more useful than ever before.
Thank You very much. You can also check the other sections of our website.
Hi, all the time i used to check weblog posts here early in the daylight, for the reason that i love to gain knowledge of more and more.
I enjoy what you guys are up too. This sort of clever work and reporting! Keep up the superb works guys I’ve incorporated you guys to my blogroll.
At this time it looks like Movable Type is the preferred blogging platform out there right now. (from what I’ve read) Is that what you are using on your blog?
Very descriptive blog, I enjoyed that a lot. Will there be a part 2?
Thanks , I’ve recently been searching for information approximately this subject for ages and yours is the best I’ve found out so far. But, what concerning the bottom line? Are you certain concerning the source?
Hi, this weekend is pleasant in favor of me, for the reason that this occasion i am reading this great educational post here at my residence.
Amazing! This blog looks exactly like my old one! It’s on a completely different subject but it has pretty much the same page layout and design. Great choice of colors!
Hello There. I found your weblog the usage of msn. That is a really smartly written article. I’ll be sure to bookmark it and return to learn extra of your helpful info. Thanks for the post. I will certainly comeback.
Hey there! I just would like to give you a big thumbs up for your excellent information you’ve got right here on this post. I’ll be coming back to your web site for more soon.
I got this site from my pal who shared with me concerning this web site and now this time I am browsing this website and reading very informative posts at this place.
Good article! We are linking to this great article on our site. Keep up the great writing.