⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 跑马灯.txt

📁 这个是在CODEWARRIOR环境下MOTO系列的单片机的一个跑马灯的程序
💻 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 + -