📄 led.c
字号:
/************************************************************************/
/* 该程序用于实验演示模板上的8个LED的循环显示 */
/* */
/* 修改日期: 2005.3.22 */
/* 修改人: 杨广龙 */
/*************************************************************************/
#include "register.h"
void initial() // 初始化子程序
{
asm(" setc INTM "); // 禁止所有中断
asm(" setc SXM "); // 抑制符号位扩展
asm(" clrc OVM "); // 累加器中结果正常溢出
asm(" clrc CNF "); // B0被配置为数据存储空间
*SCSR1=0x81FE; // CLKIN=10M,CLKOUT=4*CLKIN=40M
*WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 即WD保护位复位后的缺省值为1,故可以用
// 软件禁止看门狗
*IMR=0x0000; // 禁止所有中断
*IFR=0x0FFF; // 清除全部中断标志,"写1清0"
*MCRA=*MCRA&0x0FF; // IOPB端口配置为一般的I/O功能, TMS320LF240x的
// 端口均为8位,MCRA为16位因此控制了IOPA,和IOPB的设置
*PBDATDIR=*PBDATDIR|0x0FF00; // IOPB端口设置为输出方式
*MCRC=*MCRC&0x03FF; // 把IOPF2端口配置为一般I/O端口
*PFDATDIR=*PFDATDIR|0x0400; // 熄灭全部的LED灯
*PFDATDIR=*PFDATDIR|0x0404; // IOPF2 设置为输出方式,且IOPF2=1
*PFDATDIR=*PFDATDIR&0x0FFFB; // IOPF2=0
// 以上的操作产生一个脉冲,使LED全部熄灭
}
void main()
{
int led; // 定义一个局部变量
int i,k; // 定义其它一些临时变量
initial(); // 系统初始化
while(1)
{
int led;
for(led=0x0080,i=0;i<8;led=led>>1,i++)
{
*PBDATDIR=*PBDATDIR&0x0FF00;// 首先屏蔽IOPB的各位
*PBDATDIR=*PBDATDIR|led; // 把需要显示的值赋给IOPB端口
*PFDATDIR=*PFDATDIR|0x0404; // IOPF2 设置为输出方式,且IOPF2=1
*PFDATDIR=*PFDATDIR&0x0FFFB; // IOPF2=0,这两句语句给一个脉冲,
// 使LED上显示IOPB端口的值
for(k=0;k<0x0ffff;k++)
{
k=k; // 为了保证显示时间,给一定时间的延时
}
for(k=0;k<0x0ffff;k++)
{
k=k; // 为了保证显示时间,给一定时间的延时
}
}
}
}
void interrupt nothing()
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -