int main()
{
unsigned char ucchar;
unsigned int iLCDcnt=0;
Init();
while(1)
{
ucchar=DBGU_RCHAR();
if(0x08==ucchar)//backspace check
{
if(iLCDcnt==0)//0 position check
{
LCD_POSITION(iLCDcnt);
}
else if(iLCDcnt==0x40)//position 40에서 16으로 iLCDcnt 도 40에서 16
{
iLCDcnt=0x10;
--iLCDcnt;
LCD_POSITION(iLCDcnt);
LCD_DATA(' ');
}
else
{
--iLCDcnt;//앞자리 LCD_cnt 값으로 변경
LCD_POSITION(iLCDcnt);//커서 앞자리 이동
LCD_DATA(' ');//빈칸 출력
}
}
else//문자 입력
{
LCD_POSITION(iLCDcnt);//iLCD_cnt값을 이용한 position정함
LCD_DATA(ucchar);//문자 출력
++iLCDcnt;//position 증가
}
if(iLCDcnt>0x50)//LCD출력 over 되면 화면 리셋
{
LCD_CLEAR();
LCD_RETURN();
iLCDcnt=0;//커서 1line 1번으로 이동하기 위해 iLCDcnt 조정
LCD_POSITION(iLCDcnt);
LCD_DATA(ucchar);//화면 리셋되면서 쓰여진 문자 출력
++iLCDcnt;
}
else if(iLCDcnt==0x10)// 1line 출력이 over 되면 2line으로 넘어감
{
iLCDcnt=0x40;//커서 2line 1번으로 이동하기 위해 iLCDcnt 조정
}
}
return 0;
}
-----------------------------------------------------------------------------------------------------------------------------------------크게 두가지 if문이 쓰이는데 일단 백스페이스가 입력되는지 아니면 다른 문자가 입력되는지 확인하는if문
또하나는 라인이 오버되어 줄을 바꿔야되는지 확인하는 if문으로 구성되어있습니다.
나머지 조건은 주석에 적어놓았습니다. 중요한점은 iLCDcnt값과 실제 LCD DDRAM주소의값이 일치해야된다는 점입니다.
-----------------------------------------------------------------------------------------------------------------------------------------
'코스웨어 > 12년 내장형하드웨어' 카테고리의 다른 글
오늘 수업 한 First.asm 주석 과 소스 (0) | 2012.08.24 |
---|---|
어셈블리 기본형 (0) | 2012.08.24 |
키입력받고 케릭터 lcd 2라인 출력 (0) | 2012.08.24 |
[ARM] 캐릭터 LCD 2line BackSpace 구현 By.임창엽 (1) | 2012.08.23 |
하이퍼터미널에 타이핑시 lcd케릭터에 표시 (1) | 2012.08.23 |
[0823]하이퍼 터미널을 통해 LCD에 문자 찍기 소스입니다. (0) | 2012.08.23 |
charactor lcd 추가내용 (0) | 2012.08.23 |
[assembly]0821-업무일지 (0) | 2012.08.23 |