저는 약 2 개월 동안 8051을 프로그래밍했고 C 언어에 대해서는 다소 초보자입니다. 나는 현재 플래시 메모리를 읽고, 쓰고, 지우고, 분석하기 위해 노력하고있다. 현재 작성 단계에서 작업 중이고 필요한 작업 중 하나는 주소 위치를 지정하고 그 위치를 데이터로 채운 다음 다음 위치로 증가시켜 보완적인 데이터로 채우는 것입니다. 끝까지 도달 할 때까지 계속 켜져 있습니다.C - C에서 18 비트 증가 8051
내 딜레마는 내가 놀고 자하는 18 개의 주소 비트가 있고 현재이 18 비트에 3 바이트가 할당되어 있습니다. 어쨌든 그 18 비트를 int
또는 unsigned int
으로 조합하여 증가시킬 수 있습니까? 또는 첫 번째 바이트를 증가시키는 유일한 옵션입니다. 그 다음 바이트가 0x00
까지 증가하면 다음 바이트가 증가하고 다음 바이트가 넘어갈 때 다음 바이트가 증가합니다.
내가 현재 가지고 :
void inc_address(void)
{
P6=address_byte1;
P7=address_byte2;
P2=address_byte3;
P5=data_byte;
while(1)
{
P6++;
if(P6==0x00){P7++;}
else if(P7==0x00){P2++;}
else if(P2 < 0x94){break;} //hex 9 is for values dealing with flash chip
P5=~data_byte;
}
}
비트 필드를 사용할 수 있습니까? 좋아요, 그래서 8051은 CT 경계에서 거의 지워졌고 편평한 금붕어보다 RAM이 적었습니다. 그러나 bitfield int var에 대해 24 비트 중 18 비트를 사용할 수 있다면 ... – ThingyWotsit
증가량에 결함이있는 것 같습니다. 예를 들어, P6와 P7이 255에서 시작하면 둘 다 0으로 유지되어야 P7과 P7 = 1이됩니다. 루프는 필요하지 않습니다. "carry 테스트"는 중첩되어야합니다. – Clifford
주소 변수를 증가시키고 주소 변수를 포트에 할당하고 포트 값을 증가시키는 대신 포트에 할당하는 것이 훨씬 더 좋습니다. – Clifford