2
마이크로 칩 버전 v8.63을 C 컴파일러와 함께 사용하고 있습니다.한 번 왼쪽으로 이동하고 값 형식을 가져 오십시오.
다음 코드는 한 번 '값 1206420333240d'로 옮기고 싶습니다. 1 비트가 캐리 레지스터에 들어 있다는 것을 알고 있습니다. 하지만 pic18F4550 어셈블리 언어에서이 값을 검색하는 방법을 모르겠습니다. 제 질문은, 18F4550 그림으로 어셈블러로 한 번 이동 한 다음 캐리에서 값을 가져올 수 있습니까?
전체 프로젝트에 포함되었습니다.
unsigned int rood = 1206420333240;
void main (void)
{
//int rood[] = {0,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,1};
TRISD = 0x00; // PORTD als output
TRISB = 0b00110000; // RB4 en RB5 als input
TRISA = 0x00; // RA output
RCONbits.IPEN = 0; // prioriteit disable
INTCONbits.GIE = 1; // enable interrupt
INTCONbits.RBIE = 1; // interrupt portB on
while(1)
{
_asm sleep _endasm
}
}
#pragma interrupt ISR
void ISR (void)
{
if (INTCONbits.RBIF==1)
{
if(PORTBbits.RB5==0) // S3 pressed ?
{
int i = 0;
int b;
do {
// Try to shift left (SHF) and get value in carry.
_asm
mov EAX, 1206420333240d
_endasm
//LATAbits.LATA2 = rood << 1;
//LATDbits.LATD1 ^= 1;
//do-while for the frequentie (1500 is de freq)
b = 0;
do {
b++;
}while(b <= 2000);
i++;
}while(sizeof(rood) <= 50);
//LATDbits.LATD1 ^= 1; // D2 togglen
}
}
INTCONbits.RBIF = 0;
}
을 실제로 내가 사용했던 모든 PIC C 컴파일러는 완전한 때문에이 작동하지 않을 수 있습니다 다음 작동하지 않을 다음과 같은 이유
내가 궁금하지만,이 작업을 수행하기 위해 조립 인라인 리조트 수 쓰레기. –
나는 당신의 판단을 믿을 것입니다 ... 제가 한 PIC18 개발은 어셈블러에 있다는 것을 자유롭게 인정할 것입니다. 그래서 나는 여기서 얼마나 잘 작동 할 수 있는지 완전히 확신하지 못합니다. –