开发者

explain this code [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. Closed 11 years ago.

can anyone please explain this code?

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

char n = 0;
char FLAG =0x00;
char FLAG2 =0x00;

char RST=0x00;
unsigned char minutes_save [20];
unsigned char seconds_save [20];
int seconds, minutes, shift, count;




void init(void)
{

    DDRB = 0xff;
    DDRA  =0xff;
    MCUCR = 0x0F;
    GICR = 0xC0;
    TCCR2 = 0x05;
    ASSR = 0x08;
    TCNT2 = 0x00;
    sei();
}


SIGNAL(SIG_INTERRUPT0)

{   

    if (FLAG == 0x00)
        TIMSK = 0x40;

    if (FLAG == 0x01)
        TIMSK = 0x00;

    FLAG开发者_如何学Python = FLAG ^ 1;

}


Whenever the program receives an interrupt signal, it modifies the value of TIMSK to be 0x40 (64 in decimal) or 0x00 (0 in decimal) depending upon whether FLAG is currently set to be 0 or 1, and then it inverts the value of FLAG by performing a bitwise XOR operation with 1.

As for the rest of the code (the init() function, the other variables being declared, and the sei() function), there is not enough context provided by the code to determine what exactly it is doing/trying to do.

This page might be helpful: http://www.avr-asm-tutorial.net/avr_en/beginner/PDETAIL.html

It appears your code is setting register values on an ATMEL AVR embedded processor.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜