📄 time.c
字号:
#include <hidef.h> /* common defines and macros */
#include "all_head.h"
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
extern char NowChannel;
/************************************************************/
/* timer interrupt & Pulse Accumulator */
//TC2作定时器,定时中断,TC0-1,作16位脉冲累加器,累加采样脉冲个数
/************************************************************/
void Time_Ini(void) {
TSCR2_PR = 7; //预分频选择BUS/128
TIOS = 0b00000100; //TC2通道输出比较
TCTL2 = 0b00010000; //定时器控制寄存器2设置
TCTL4 = 0b00001010; //IOC0-1在下降沿捕捉
PBCTL_PBEN = 1; //16位脉冲累加器B系统使能
PBCTL_PBOVI = 1; // Enable interrupt overflow
PBFLG = 2; // Reset request flag
TIE_C0I = 0; //TC0中断关闭
TIE_C2I = 1; //TC2中断使能
TC2 = 31250; //TC2定时器设置为输出比较值为625,此时第一次进中断的时间间隔为10ms
/*
-------------------------------------------------
time 625 6250 31250
the set of TC2 10ms 0.1s 0.5s
-------------------------------------------------
*/
TFLG1_C2F = 1; //清除标志寄存器
TSCR1_TEN = 1; //定时器1使能
}
void Delay(int sec)
{
unsigned int i = 0;
for(;sec>0;sec--)
{
for(i=0;i<50000;i++);
}
}
/********I/O口初始化函数*********/
void IO_Ini(void) {
DDRB = 0xff; //设定PB口为输出
DDRA = 0xff; //设定PA口为输出
DDRH = 0x00; //设定PH口为输入
PORTB = 0x01; //初始化PB口
PORTA = 0x00; //初始化PA口
}
/********按键函数********/
void Getkey(void) {
if(PTH_PTH0 == 0) //按键S3,表示+,连接PTH_PTH0
{
delay(10); //延时去抖动
if(PTH_PTH0 == 0){
PORTB_BIT1 = 0; //用于调试方便,灯亮
while(PTH_PTH0 == 0); //等待按键释放
NowChannel++;
if(NowChannel>7)
NowChannel = NowChannel - 8;
Sci0Write_string("picture up");
Sci0_Sendbyte('\n');
}
}
else
{
PORTB_BIT1 = 1; //用于调试方便,灯灭
}
if(PTH_PTH1 == 0) //按键S4,表示-,连接PTH_PTH1
{
delay(10); //延时去抖动
if(PTH_PTH1 == 0){
PORTB_BIT2 = 0; //用于调试方便,灯亮
while(PTH_PTH1 == 0); //等待按键释放
NowChannel--;
if(NowChannel<0)
NowChannel = NowChannel + 8;
Sci0Write_string("picture dowm");
Sci0_Sendbyte('\n');
}
}
else
{
PORTB_BIT2 = 1; //用于调试方便,灯灭
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -