AVR shift algorithm detailed explanation

Publisher:Heavenly999Latest update time:2015-01-14 Source: 51heiKeywords:AVR Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

Many beginners are confused by the shift algorithm, which is in the form of (1<AVR's USART.

 

UCSRC = (1<

UCSR0B = (1<// RXCIE=1;TXCIE=1;UDREIE=0;RXEN=1;TXEN= 1

This way of writing is a blessing for experts, because these codes explain which bits of the register are operated on, and the meaning of its operation can be seen; but it is a curse for novices, because novices cannot understand such programs.


Let's go back to the beginning and explain what the shift algorithm is:

For example: A = (1<<2), 1 written in binary is 0000 0001, and this 1 shifted left 2 bits is 0000 0100, so the resulting number A is 0000 0100, which is 0x04.

For example: B = (2<<4), 2 is written as 0000 0010 in binary, and this number shifted left 4 bits is 0010 0000, so the resulting number B is 0010 0000, which is 0x20.

Both of the above shift algorithms are correct. The first way of writing it represents a number with the third digit being 1 and the rest being 0s, and the numbering starts from 0. For example, (1<<0) represents 0000 0001, and (1<<7) represents 1000 0000. However, the second way of writing it does not have this meaning. Shifting is also used for multiplication and division. Shifting left by one bit multiplies by 2, and shifting right by one bit divides by 2. The number obtained by shifting 2 left by four bits in the second way of writing it above is 2×2×2×2×2=32, which is 0x20 above.


Let’s look at the above sentence again: UCSRC = (1<

UCSRC is an eight-bit register related to serial port communication. Each bit of it has a special definition. We can see the following by checking the data sheet.

The header file iom16v.h and similar files included in the program will have a definition like #define URSEL 7. 1<

Keywords:AVR Reference address:AVR shift algorithm detailed explanation

Previous article:ICC AVR line number display settings
Next article:ICC AVR font size adjustment

Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号