최근에 겪은 단편기 프로그래밍 사소한 문제 총결

1473 단어 단편기 and 모듈
2013.07.20:
1. 시간이 너무 길어서 어느 항목에서 만났는지 기억이 나지 않습니다. 코드 구역을 가리키는 바늘도 코드 키워드 설명을 추가해야 합니다.
예를 들어 unsigned charcode arr[30];수조, 바늘로 가리키고 바늘도 unsigned charcode*p로 설명하기;
나중에 사용하면 다른 많은 곳에서 사용하면 이렇게 설명할 필요가 없습니다. unsigned char*p만 있으면 됩니다.됐어요. 하지만 그때는 확실히 코드 키워드 성명을 넣어야 했던 걸로 기억해요.
2. 51에서 비트 변수는 유한한 것 같다.
만약에 부울형을 표지 변수로 사용하려면 컨트롤을 절약하기 위해 비트형 변수를 사용할 수 있지만 DRS1000 프로젝트에서 비트형 변수를 사용하는 오류가 발생한 적이 있는데 unsigned char형으로 바꾸면 OK입니다. 그때 정의된 변수는 이미 많습니다. 비트로 주소를 찾을 수 있는 저장소를 모두 사용했을 것입니다.
3. 기계 스위치로 INT 중단을 촉발할 때:
기계 스위치가 진동하기 때문에 발생하는 전압에 가시가 생기기 때문에 이런 가시는 여러 번 촉발하여 끊어진다.여러 번 발생하는 요인은 다음과 같습니다.
(1) 스위치를 눌렀을 때의 진동.첫 번째 저전압 레벨이 왔을 때 인터럽트 프로세서에 들어간다. 그 후에 이 진동이 인터럽트 프로세서가 실행되는 과정에서 발생하더라도 인터럽트 프로세서에 들어간 후에 총 인터럽트를 끄더라도 이 가시들은 인터럽트 로고의 위치를 차지하고 인터럽트 프로세서가 끝난 후에 다시 인터럽트 프로세서를 터치한다.
(2) 스위치가 방출될 때의 진동.첫 번째 고전평이 왔을 때 인터럽트 프로세서를 종료하고 그 후의 가시가 다시 인터럽트 프로세서에 들어간다.
해결 방법:
인터럽트 프로세서의 마지막 부분에 저전압 대기 코드를 추가하고 저전압 종료를 기다렸다가 5ms(스위치가 풀릴 때 가시가 끼는 방해를 없애기 위해), 5ms 인터럽트 로고를 제거한다(인터럽트 프로세서가 실행되는 과정에서 인터럽트 로고를 다시 촉발했을 수 있다).코드는 다음과 같습니다.
void int0() interrupt 0
{
	/*Do something*/

	while(rollRA==0);//       
	delay5(1);//           
	IE0=0;	//       ,        
}

4. 15 시리즈 단편기의 경우 직렬 포트를 사용할 때 AUXR 레지스터의 값을 지정해야 한다. 그렇지 않으면 프로그램이 정상적으로 실행될 수 없다.
이 상황은 15 시리즈 단편기가 직렬 포트만 사용하면 반드시 AUXR 레지스터의 값을 알려야 하기 때문에 12 시리즈처럼 이 레지스터를 무시할 수 없다.
15 시리즈 단편기를 사용할 때 습관이 생겼다. 마인 함수의 첫 문장은AUXR=0;뒤에 있는 직렬 포트는 필요에 따라 초기화됩니다.

좋은 웹페이지 즐겨찾기