타이머/카운터(시계)
#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.
lcd_Init ();
tc0_Init ();
sei();
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;
}
return 0;
}
===========================================================================================================
#ifndef __TC0_H__
#define __TC0_H__
#include "main.h"
void tc0_Init(void);
void tc0_MSDelay(unsigned int uiDtime);
#endif //__TC0_H__
===========================================================================================================
#include "tc0.h"
volatile unsigned int uiMsec;
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초 증가
}
void tc0_MSDelay(unsigned int uiDtime)
{
if(uiDtime > 1000)
{
uiDtime = 1000; // 최대값을 1000으로 제한
}
uiMsec = 0;
while(uiMsec < uiDtime);
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160321_조재찬_업무일지_펌웨어(UART) (0) | 2016.03.21 |
---|---|
20160321_최기영_업무일지_펌웨어실습7_시리얼 통신 (0) | 2016.03.21 |
20160321_장진웅_업무일지_펌웨어 실습 (0) | 2016.03.21 |
20160318_박진한_업무일지_펌웨어 LCD 타이밍 카운트, 리눅스 (0) | 2016.03.21 |
2016_03_21_USAR_노태경_업무일지 (1) | 2016.03.21 |
2016_03_21_시리얼_노태경_업무일지 (0) | 2016.03.21 |
20160314 송찬호 업무일지 펌웨어 (0) | 2016.03.21 |
안드로이드 오라클 JAVA 걷어내는중이라네요 (0) | 2016.03.21 |