FND TEST
DK128의 세븐세그먼트(첫번째 그림의 숫자LED)체크를 위해 J19점퍼에 모두 GND(0V)를 연결해본다 확인결과 00이 선명하게 찍히는 걸 확인할 수 있다.
J19
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
PORTA
PA7 =8 |
PA6 =7 |
PA5 =6 |
PA4 =5 |
PA3 =4 |
PA2 =3 |
PA1 =2 |
PA0 =1 |
J19의 1,2,3,4번은 U14 세븐세그먼트와 J19의 5,6,7,8번은 U16 세븐세그먼트와 각각 연결되어있다. U14는 첫번째 그림의 오른쪽 세븐세그먼트이고 U16은 왼쪽 세븐세그먼트이다.
만약 34라는 숫자를 출력하고 싶으면 아래와 같이 4개의 니블로 나눠 PA7~PA4까지와
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
PA3~PA0까지 두영역으로 나눈다. 3은 4bit로 0011 4는 4bit로 0100이므로 34가 출력되는 것이다.
LED테스트
R32에서 J15점퍼 방면으로 전류가 흘러야 D4~D11까지의 다이오드가 불이 들어오므로 J15의 1~8까지는 Low를 주어야한다.
#define PINA (*((volatile unsigned char *)0x20))
#define DDRA (*((volatile unsigned char *)0x21))
#define PORTA (*((volatile unsigned char *)0x22))
int main(void)
{
// volatile unsigned int uiCnt;
volatile unsigned int uiLoop;
volatile int iDir;
volatile unsigned int uiPos;
DDRA = 0xFF;
PORTA = 0x00;
iDir = 1;
uiPos = 0;
while(1)
{
if(1==iDir)
{
PORTA = ~(1<<uiPos );
}
else
{
PORTA = ~(1>>uiPos );
}
for(uiLoop=0;60000>uiLoop;++uiLoop);
uiPos = uiPos+1;
if(7<uiPos)
{
iDir=iDir*-1;
uiPos=0;
}
return 0;
}
PORTA = ~(1<<uiPos) 1<<0 == PORTA = 0000 0001 ~PORTA = 1111 1110 이므로
D4다이오드에 불이들어오고 차례대로 D11번까지 들어온후에 uiPos가 8이되므로 if문이 동작 다시 D11부터 D4까지 순서대로 돌아오는 소스
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
2016-03-15.강정수.전역&지역변수,lcd기판기초 (0) | 2016.03.17 |
---|---|
20160316-조재찬-업무일지-LCD출력 (0) | 2016.03.17 |
20160315-조재찬-업무일지-펌웨어 분석 및 학습 (0) | 2016.03.17 |
Zenmate PC 클라이언트 (0) | 2016.03.16 |
20160315_노유찬_펌웨어실습(LCD출력준비및전역변수) (0) | 2016.03.16 |
팀뷰어 보안 문제 있는거 같습니다... (0) | 2016.03.16 |
20160316-이보원-ATMega2560 -LCD 실험 2 (1) | 2016.03.16 |
20160314-허도경-업무일지-펌웨어분석2 (0) | 2016.03.16 |