📄 led.c
字号:
//(2) 主程序
// 该程序用于实验演示模板上的8个LED的循环显示
#include "register.h"
main() // 初始化子程序
{ int led;
int i,k;
asm(" setc SXM"); // 抑制符号位扩展
asm(" clrc OVM"); // 累加器中结果正常溢出
asm(" clrc CNF"); // B0被配置为数据存储空间
asm(" setc INTM"); // 禁止所有中断
SCSR1=0x81FE; // CLKIN=10M,CLKOUT=4*CLKIN=40M
WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 可以用软件禁止看门狗
IMR=0x0000; // 禁止所有中断
IFR=0x0FFFF; // 清除全部中断标志,"写1清0"
MCRA=MCRA&0x00c7; // IOPA3,IOPA4,IOPA5,IOPB端口配置为一般的I/O功能,
PBDATDIR=0x0FF00; // IOPB端口设置为输出方式,熄灭全部的LED
PADATDIR=PADATDIR&0x0FF00;
PADATDIR=PADATDIR|0x0FF38; //1111 1111 0011 1000 IOPA3,IOPA4,IOPA5 设置为输出方式,且LEDCLK=1
while(1)
{
for(led=0x0080,i=0;i<8;led=led>>1,i++)
{
PBDATDIR=PBDATDIR&0x0FF00; //首先屏蔽B口的各位
PBDATDIR=PBDATDIR|led; //把需要显示的值给IOPB端口
PADATDIR=PADATDIR&0x0FF00;
PADATDIR=PADATDIR|0x0FF38; // LEDCLK=1
for(k=0;k<0x0fffe;k++)
k=k;
}
}
}
// 直接返回中断服务程序
void interrupt nothing( )
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -