📄 跑马灯.txt
字号:
跑马灯:(以MC68HC908JL8_SDIP32断为例,共有10种不同方法实现不同的跑马灯状态)
/*********************************************************/
/* 功能描述: 四路功能选择输入: */
/* 编译环境:CodeWarrior3.1----C语言 */
/* IC 型号 :mc68hc908jl8_sdip32 */
/* 晶振频率:4.9152MHz */
/* 编辑时间:2005_12_22 */
/* 最近更新时间:2005年12月22日 */
/* 编者:laomu */
/*********************************************************/
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908JL8.h> /* include peripheral declarations */
//declare the substrate programmes.
void init_sys(void);
void delay(uint delay_time);
void display_1(void);
void display_2(void);
void display_3(void);
void display_4(void);
void display_5(void);
void display_6(void);
void display_7(void);
void display_8(void);
void display_9(void);
void display_10(void);
void key_scan(void);
uchar key_flag[8]=0;
/*********************************************************/
/* 函数:void main(void); */
/* 功能: 系统初始化,开定时器1中断计时计数,无限循环: */
/* 输入功能选择位判断,同时根据选择执行相应的程序. */
/* 包含:SEL_0 = 0,others = 1:瞬态function_1() */
/* :SEL_1 = 0,others = 1:互锁function_2() */
/* :SEL_2 = 0,others = 1:自锁function_3() */
/* :SEL_3 = 0,others = 1:延时function_4() */
/*********************************************************/
void main(void) {
uchar i;
DisableInterrupts; /* disable interrupts */
/* include your code here */
init_sys();
T1SC_TSTOP = 0; // start timer counter;
for(;;) {
for(i=0;i<5;i++){
display_1();
}
for(i=0;i<5;i++){
display_2();
}
for(i=0;i<5;i++){
display_3();
}
for(i=0;i<5;i++){
display_4();
}
} /* loop forever */
/* please make sure that you never leave this function */
}
/*********************************************************/
/* 函数:void display_1(void); */
/* 功能: LED0-->LED7依次轮流点亮, */
/* 状态:OK! */
/*********************************************************/
void display_1(void){
uchar i,mask;
mask = 1;
for(i=0;i<8;i++){
PTB = mask;
delay(10000);
mask = mask<<1;
}
}
/*********************************************************/
/* 函数:void display_2(void); */
/* 功能: LED7-->LED0依次轮流点亮, */
/* 状态: */
/*********************************************************/
void display_2(void){
uchar i,mask;
mask = 0x80;
for(i=0;i<8;i++){
PTB = mask;
delay(10000);
mask = mask>>1;
}
}
/*********************************************************/
/* 函数:void display_3(void); */
/* 功能: LED0-->LED7-->LED0依次循环轮流点亮, */
/* 状态:OK! */
/*********************************************************/
void display_3(void){
uchar i,mask;
mask = 1;
for(i=0;i<7;i++){
PTB = mask;
delay(10000);
mask = mask<<1;
}
mask=0x80;
for(i=0;i<7;i++){
PTB = mask;
delay(10000);
mask = mask>>1;
}
}
/*********************************************************/
/* 函数:void display_4(void); */
/* 功能: LED0-->LED3和LED7-->LED4; */
/* LED3-->LED0和LED4-->LED7; */
/* 循环轮流点亮, */
/* 状态:OK! */
/*********************************************************/
void display_4(void){
uchar mask,mask1,mask2;
uchar i;
mask1 = 0x01;
mask2 = 0x80;
for(i=0;i<4;i++){
mask = mask1|mask2;
PTB = mask;
delay(10000);
mask1 = mask1<<1;
mask2 = mask2>>1;
}
mask1 = 0x08;
mask2 = 0x10;
for(i=0;i<4;i++){
mask = mask1|mask2;
PTB = mask;
delay(10000);
mask1 = mask1>>1;
mask2 = mask2<<1;
}
}
/*********************************************************/
/* 函数:void display_5(void); */
/* 功能: LED0-->LED7依次点亮,再LED7-->LED0依次熄灭 */
/* 状态:OK! */
/*********************************************************/
void display_5(void){
uchar i,temp,temp1,mask;
temp = 0;
mask = 0x01;
for(i=0;i<8;i++){
temp = temp|mask;
PTB = temp;
delay(10000);
mask = mask<<1;
}
mask = 0x80;
temp = 0;
for(i=0;i<8;i++){
temp = temp|mask;
temp1 = temp;
PTB = ~temp;
delay(10000);
mask = mask>>1;
}
}
/*********************************************************/
/* 函数:void display_6(void); */
/* 功能: LED0-->LED7依次点亮,再LED0-->LED7依次熄灭 */
/* 状态: */
/*********************************************************/
void display_6(void){
uchar i,temp,temp1,mask;
temp = 0;
mask = 0x01;
for(i=0;i<8;i++){
temp = temp|mask;
PTB = temp;
delay(10000);
mask = mask<<1;
}
mask = 0x01;
temp = 0;
for(i=0;i<8;i++){
temp = temp|mask;
temp1 = temp;
PTB = ~temp;
delay(10000);
mask = mask<<1;
}
}
/*********************************************************/
/* 函数:void display(void); */
/* 功能: LED0-->LED7按二进制显示0--255 */
/*********************************************************/
void display_7(void){
uchar i;
for(i=0;i<255;i++){
PTB = i;
delay(10000);
}
// the last one state
PTB = 0xFF;
delay(5000);
}
/*********************************************************/
/* 函数:void display(void); */
/* 功能: LED0--LED2--LED4--LED6; */
/* LED1--LED3--LED5--LED7; */
/* 依次点亮, */
/*********************************************************/
void display_8(void){
uchar i,mask;
mask = 0x01;
for(i=0;i<4;i++){
PTB = mask;
mask = mask<<2;
delay(10000);
}
mask = 0x02;
for(i=0;i<4;i++){
PTB = mask;
mask = mask<<2;
delay(10000);
}
}
/*********************************************************/
/* 函数:void display(void); */
/* 功能: */
/*********************************************************/
void display_9(void){
uchar mask;
mask = 0x03;
while(mask){
PTB = mask;
mask = mask<<1;
}
}
/*********************************************************/
/* 函数:void display_10(void); */
/* 功能: LED0-->LED7同时闪烁变化 */
/*********************************************************/
void display_10(void){
PTB = 0xFF;
delay(10000);
PTB = 0x00;
delay(10000);
}
/*********************************************************/
/* 函数:void delay(void); */
/* 功能: 1.清除其他功能所用到的标志变量; */
/* 2.读PTA并屏蔽高四位(功能选择),在每一种可能的 */
/* 状态中,去抖处理,根据输入设置相应标志变量的值, */
/* 根据标志位设定输出 */
/*********************************************************/
void delay(uint delay_time){
uint i;
i = delay_time;
while(i--);
}
/*********************************************************/
/* 函数名:void init_sys(void) */
/* 功能:系统初始化 */
/*********************************************************/
void init_sys(void){
CONFIG1 = 0x03; // close watchdog
CONFIG2 = 0x80;
//初始化I/O口PTA ---all are input direction.
DDRA = 0x00;
//初始化I/O口PTB ---all are output direction.
DDRB = 0xFF;
PTB = 0x00;
//初始化I/O口PTD---all are output direction.
//DDRD = 0x00;
DDRD = 0xFF;
PTD = 0x00;
DDRE = 0x00;
EnableInterrupts;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -