리눅스(텔넷)
=======================================================
타이머/카운터(시계2)
#include "main.h"
#include "lcd.h"
#include "tc0.h"
int main(void)
{
char caTime[] = "00:00:00";
// volatile unsigned int uiSec = 0; atmega에서는 int형은 2바이트 0~65535.
unsigned int uiTime;
lcd_Init ();
tc0_Init ();
sei();
uiTime = uiSec = 0; // 순서는 오른쪽부터 .
while(1)
{
caTime[0] = '0' + (uiSec / 3600) / 10;
caTime[1] = '0' + (uiSec / 3600) % 10;
caTime[3] = '0' + ((uiSec % 3600) / 60) / 10;
caTime[4] = '0' + ((uiSec % 3600) / 60) % 10;
caTime[6] = '0' + (((uiSec % 3600) % 60) % 60) / 10;
caTime[7] = '0' + (((uiSec % 3600) % 60) % 60) % 10; //0의 아스키코드값에 3을 더해도 3이 된다.
lcd_Inst(LCD_HOME); //커서를 앞으로
lcd_Str(caTime);
// tc0_MSDelay(900); // 1초 지연
// ++uiSec;
while(uiTime == uiSec);
uiTime = uiSec;
}
return 0;
}
=====================================================================================================
#include "tc0.h"
static volatile unsigned int uiMsec; // static 이파일 내부에서만 변수를 공유하게 함.
volatile unsigned int uiSec;
void tc0_Init(void)
{
TCCR0A = (0 << COM0A1) | (0 << COM0A0) | (0 << COM0B1) |(0 << COM0B0) |(0 << WGM01) |(0 << WGM00);
TCCR0B = (0 << FOC0A) | (0 << FOC0B) | (0 << WGM02) |(0 << CS02) |(1 << CS01) |(1 << CS00);
//TCNT0 = 0x00; 우리가 사용하는 것이 아니다. 컴퓨터가 카운트한다
OCR0A = 250; //분주비표 참고
//OCR0B = 0x00; 우리는 OCR0A와 비교하므로 B는 사용 하지않는다
TIMSK0 = (0 << OCIE0B) | (1 << OCIE0A) | (0 << TOIE0);
//TIFR0 = 0x00; //우리가 사용하지 않는다.
}
void __vector_21(void)
{
++uiMsec; // 타이머 / 카운터로 인한 내부인터럽트 발생시 0.001초 증가
if(1000 <= uiMsec)
{
uiMsec = 0;
++uiSec;
}
}
void tc0_MSDelay(unsigned int uiDtime)
{
if(uiDtime > 1000)
{
uiDtime = 1000; // 최대값을 1000으로 제한
}
uiMsec = 0;
while(uiMsec < uiDtime);
}
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
2016_03_21_업무일지_노태경 (0) | 2016.03.22 |
---|---|
USART1 Rx Tx 완료 (0) | 2016.03.22 |
2016_3_22_노태경_USART_업무일지 (0) | 2016.03.22 |
16.03.21 조승현 업무일지 시리얼페러럴/max3232/전송방식/dataoverrun/디파인거는법/sf&hw개념 (2) | 2016.03.22 |
후니의 네트워크 이야기 258~314 (0) | 2016.03.22 |
후니의 네트워크 이야기 2~257 (0) | 2016.03.22 |
20160316-업무일지-허도경-펌웨어 실습 LCD (0) | 2016.03.22 |
20160322_박진한_업무일지_펌웨어 실습 (0) | 2016.03.22 |