?? dsq_main.c
字號:
//本程序用于鐵路道口管理等的定時記錄等功能
//修改時間2009-3-7
//設計:魏兆俊
//版本:1.0
#include<reg52.h>
//#include<w77c32.h>
#include<stdio.h>
#include<intrins.h>
#include<absacc.h>
/*
版本說明
*/
#define uchar unsigned char
#define uint unsigned int
#define true 1
#define faluse 0
#define on 1
#define off 0
sbit warm_control=P2^3;
sbit LED_BIT_A=P2^4;
sbit LED_BIT_B=P2^5;
sbit LED_BIT_C=P2^6;
sbit LED_BIT_D=P2^7;
sbit key_select=P2^0;
sbit key_inc=P2^1;
sbit key_dec=P2^2;
uchar led_scan_counter;
uchar display_counter;
uchar led_code[17];
uchar led_code_black[17];
uchar code led_code_ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xff};
uchar time_write[12];
uint light_on;
uchar led_light_flag;
//CPU 系統初始化函數
void system_start();
void delay500ms();
//74HC154譯碼輸出
void ym_out();
/********************************************************************
*
* 名稱: v_Get1302
* 說明:
* 功能: 讀取DS1302當前時間
* 調用: uc_R1302()
* 輸入: ucCurtime: 保存當前時間地址。當前時間格式為: 秒 分 時 日 月 星期 年
* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 無
***********************************************************************/
void v_Get1302();
/********************************************************************
*
* 名稱: v_Set1302
* 說明:
* 功能: 設置初始時間
* 調用: v_W1302()
* 輸入: pSecDa: 初始時間地址。初始時間格式為: 秒 分 時 日 月 星期 年
* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 無
***********************************************************************/
void v_Set1302();
//鍵盤處理函數
void key_function();
void delay5000ms();
//系統主程序
void main ()
{
uchar i;
system_start();
led_scan_counter=0;
time_write[12]=0x9;
time_write[11]=0x0;
time_write[10]=0x03;
time_write[9]=0x0;
time_write[8]=0x0;
time_write[7]=0x1;
time_write[6]=0x2;
time_write[5]=0x2;
time_write[4]=0x5;
time_write[3]=0x4;
time_write[2]=0x4;
time_write[1]=0x0;
// v_Set1302();
while (1)
{
v_Get1302();
for (i=0;i<17;i++)
{led_code_black[i]=led_code[i];}
// led_code_black[7]=0x0b;
// led_code_black[8]=0x0b;
warm_control=on;
key_function();
delay500ms();
delay500ms();
delay500ms();
delay500ms();
delay500ms();
delay500ms();
}
}
//鍵盤處理函數
void key_function()
{
led_light_flag=0;
key_function0:if (key_select==0)
{delay5000ms();
goto key_function1; }
if (led_light_flag>0)
{goto key_function_change; }
return;
key_function1:if (key_select==0)
{goto key_function2;}
if (led_light_flag>0)
{goto key_function_change; }
return ;
key_function2:
delay5000ms();
delay5000ms();
led_light_flag++;
if (led_light_flag>14)
{goto key_function_end;}
switch (led_light_flag)
{
case 1:led_code_black[3]=0x0b;
break;
case 2:led_code_black[3]=led_code[3];
led_code_black[4]=0x0b;
break;
case 3:led_code_black[4]=led_code[4];
led_code_black[5]=0x0b;
break;
case 4:led_code_black[5]=led_code[5];
led_code_black[6]=0x0b;
break;
case 5:led_code_black[6]=led_code[6];
led_code_black[7]=0x0b;
break;
case 6:led_code_black[7]=led_code[7];
led_code_black[8]=0x0b;
break;
case 7:led_code_black[8]=led_code[8];led_code_black[9]=0x0b;
break;
case 8:led_code_black[9]=led_code[9];led_code_black[10]=0x0b;
break;
case 9:led_code_black[10]=led_code[10];led_code_black[11]=0x0b;
break;
case 10:led_code_black[11]=led_code[11];led_code_black[12]=0x0b;
break;
case 11:led_code_black[12]=led_code[12];led_code_black[13]=0x0b;
break;
case 12:led_code_black[13]=led_code[13];led_code_black[14]=0x0b;
break;
case 13:led_code_black[14]=led_code[14];led_code_black[15]=0x0b;
break;
case 14:led_code_black[15]=led_code[15];led_code_black[16]=0x0b;
break;
default:
break;
}
delay5000ms();
delay5000ms();
delay5000ms();
delay5000ms();
goto key_function0;
key_function_change:if (key_inc==0) //判斷是否有加減鍵
{goto key_function_change1;}
if(key_dec==0)
{goto key_function_change1;}
goto key_function0;
key_function_change1:delay5000ms();
if (key_inc==0)
{goto key_inc_process;}
if (key_dec==0)
{
goto key_dec_process;}
delay5000ms();
delay5000ms();
delay5000ms();
delay5000ms();
goto key_function0;
//加鍵處理函數
key_inc_process:
switch (led_light_flag)
{
case 1:if (led_code[3]==9)
{led_code[3]=0;}else
led_code[3]=led_code[3]+1;
break;
case 2:if (led_code[4]==9)
{led_code[4]=0;}else
led_code[4]=led_code[4]+1;
break;
case 3:if (led_code[5]==9)
{led_code[5]=0;}else
led_code[5]=led_code[5]+1;
break;
case 4:if (led_code[6]==9)
{led_code[6]=0;}else
led_code[6]=led_code[6]+1;
break;
case 5:if (led_code[7]==9)
{led_code[7]=0;}else
led_code[7]=led_code[7]+1;
break;
case 6:if (led_code[8]==9)
{led_code[8]=0;}else
led_code[8]=led_code[8]+1;
break;
case 7:if (led_code[9]==9)
{led_code[9]=0;} else
led_code[9]=led_code[9]+1;
break;
case 8:if (led_code[10]==9)
{led_code[10]=0;}else
led_code[10]=led_code[10]+1;
break;
case 9:if (led_code[11]==9)
{led_code[11]=0;} else
led_code[11]=led_code[11]+1;
break;
case 10:if (led_code[12]==9)
{led_code[12]=0;}else
led_code[12]=led_code[12]+1;
break;
case 11:if (led_code[13]==9)
{led_code[13]=0;} else
led_code[13]=led_code[13]+1;
break;
case 12:if (led_code[14]==9)
{led_code[14]=0;}else
led_code[14]=led_code[14]+1;
break;
case 13:if (led_code[15]==9)
{led_code[15]=0;}else
led_code[15]=led_code[15]+1;
break;
case 14:if (led_code[16]==9)
{led_code[16]=0;} else
led_code[16]=led_code[16]+1;
break;
default:
break;
}
delay5000ms();
delay5000ms();
delay5000ms();
goto key_function0;
//減鍵處理函數
key_dec_process:
switch (led_light_flag)
{
case 1:if (led_code[3]==0)
{led_code[3]=9;}else
led_code[3]=led_code[3]-1;
break;
case 2:if (led_code[4]==0)
{led_code[4]=9;}else
led_code[4]=led_code[4]-1;
break;
case 3:if (led_code[5]==0)
{led_code[5]=9;}else
led_code[5]=led_code[5]-1;
break;
case 4:if (led_code[6]==0)
{led_code[6]=9;} else
led_code[6]=led_code[6]-1;
break;
case 5:if (led_code[7]==0)
{led_code[7]=9;}else
led_code[7]=led_code[7]-1;
break;
case 6:if (led_code[8]==0)
{led_code[8]=9;} else
led_code[8]=led_code[8]-1;
break;
case 7:if (led_code[9]==0)
{led_code[9]=9;}else
led_code[9]=led_code[9]-1;
break;
case 8:if (led_code[10]==0)
{led_code[10]=9;}else
led_code[10]=led_code[10]-1;
break;
case 9:if (led_code[11]==0)
{led_code[11]=9;}else
led_code[11]=led_code[11]-1;
break;
case 10:if (led_code[12]==0)
{led_code[12]=9;} else
led_code[12]=led_code[12]-1;
break;
case 11:if (led_code[13]==0)
{led_code[13]=9;} else
led_code[13]=led_code[13]-1;
break;
case 12:if (led_code[14]==0)
{led_code[14]=9;}else
led_code[14]=led_code[14]-1;
break;
case 13:if (led_code[15]==0)
{led_code[15]=9;} else
led_code[15]=led_code[15]-1;
break;
case 14:if (led_code[16]==0)
{led_code[16]=9;} else
led_code[16]=led_code[16]-1;
break;
default:
break;
}
delay5000ms();
delay5000ms();
delay5000ms();
goto key_function0;
key_function_end:
time_write[12]=led_code[4];
time_write[11]=led_code[3];
time_write[10]=led_code[6];
time_write[9]=led_code[5];
time_write[8]=led_code[8];
time_write[7]=led_code[7];
time_write[6]=led_code[10];
time_write[5]=led_code[9];
time_write[4]=led_code[12];
time_write[3]=led_code[11];
time_write[2]=led_code[14];
time_write[1]=led_code[13];
v_Set1302();
return ;
}
//74HC154譯碼輸出
void ym_out()
{
if (light_on<1500)
{P0=led_code_ma[led_code_black[led_scan_counter]];
goto ym_out1;}
if (light_on<3000)
{P0=led_code_ma[led_code[led_scan_counter]];
goto ym_out1;}
light_on=0;
ym_out1: switch (led_scan_counter)
{
case 2:
LED_BIT_A=1;
LED_BIT_B=1;
LED_BIT_C=1;
LED_BIT_D=1;
break;
case 1:
LED_BIT_A=0;
LED_BIT_B=1;
LED_BIT_C=1;
LED_BIT_D=1;
break;
case 4:
LED_BIT_A=1;
LED_BIT_B=0;
LED_BIT_C=1;
LED_BIT_D=1;
break;
case 3:
LED_BIT_A=0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -