📄 samotor.c
字号:
#include "ICETEK-C6713-A.h"
int nAddStep,nStep,nCount;
main()
{
unsigned char dbScanCode;
char cKey;
nCount=nStep=0; nAddStep=1;
init_emif(); // 初始化emif
InitCTR(); // 初始化ICETEK-CTR
InitInterrupt();
*((unsigned short int *)0x0901f000e)= 0x0c2;
while ( 1 )
{
if ( nCount>16 )
{
nCount=0;
dbScanCode=GetKey();
if ( dbScanCode!=0 && dbScanCode!=0x0ff )
{
if ( dbScanCode==SCANCODE_Enter ) break;
else
{
cKey=ConvertScanToChar(dbScanCode);
if ( cKey=='4' ) nAddStep=1;
else if ( cKey=='6' ) nAddStep=-1;
}
}
}
}
CSR&=0xfffffffe; // 关中断 GIE=0
TIMER1CTL&=0x0ffffff3f; // GO=0 /HLD=0 =>计数器暂停
*((unsigned short int *)0x0901f000e)= 0x0c0;
CloseCTR();
exit(0);
}
void interrupt Timer() //中断响应函数
{
CTRLR=pwm[nStep];
nStep+=nAddStep;
if ( nStep<0 ) nStep=7;
else if ( nStep>7 ) nStep=0;
nCount++;
}
void InitInterrupt(void)
{
// 设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00000c00; // 重置中断向量表到0C00h
IMH=0x08000000; // 指定Timer1产生int15中断
IML=0;
ICR=0xff; // 清除等待的中断
IER=0x8003; // 使能int15中断
// 设置定时器产生中断信号的频率
TIMER1PRD=0x1e84; // 定时器1的周期
TIMER1CTL=0x3c0; // 开始计数
CSR=CSR|1; // 开中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -