?? kouxian.c
字號:
//------------------------定義頭文件----------------
#include <iom162v.h>
#include <macros.h>
#include <math.h>
#include <eeprom.h>
//-------------------------定義常量-----------------
#define mima1 11 //設置一級密碼
#define mima2 22 //設置二級密碼
#define mima3 33 //設置三級密碼
#define mima1time 100 //設置一級密碼時間//單位小時
#define mima2time 150 //設置二級密碼時間//單位小時
#define mima3time 200 //設置三級密碼時間//單位小時
#define pinbaoopen 0x65 //啟動屏保的組合按鍵 0x65 向左向右,主軸啟動,方式轉換//按住時上電子有效
#define pinbaooff 0xa6 //停止屏保的組合按鍵 0xa6 向左向右,主軸停止,系統總清//按住時上電子有效
#define OPENBZ 0X55
#define CLOSEBZ 0XAA
#define CE 0X20
#define CLK 0X08
#define DI 0X10
#define yearhz 0x0e
#define monthhz 0x10
#define dayhz 0x12
#define maohaohz 0x0c
#define weekhz 0x14
//----------------------宏定義----------------------
#define DI0 PORTC&=0Xfd
#define DI1 PORTC|=0X02
#define RW0 PORTC&=0Xfe
#define RW1 PORTC|=0X01
#define A90 PORTC&=0Xfb
#define A91 PORTC|=0X04
#define CS2450 PORTC&=0Xf7
#define CS2451 PORTC|=0X08
#define kCS10 PORTC&=0Xef
#define kCS11 PORTC|=0X10
#define kCS20 PORTC&=0Xdf
#define kCS21 PORTC|=0X20
#define eor_resc PORTD^=BIT(PD0)
//----------------------定義絕對地址空間------------
#define CS1_ADDRESS (*(volatile unsigned char *)0xE600)
#define CS2_ADDRESS (*(volatile unsigned char *)0xD600)
#define code_ADDRESS (*(volatile unsigned char *)0xF400)
#define data_ADDRESS (*(volatile unsigned char *)0xF600)
#define inport0 (*(volatile unsigned char *)0x8b00)
#define inport1 (*(volatile unsigned char *)0x4b00) //16c650
void dis_control_mode(unsigned char line,unsigned char column, unsigned char lcd_csx);
void delay(unsigned int n);
void init_disp(void);
void strat_scarn(void);
void write_code(unsigned char w_code);
void write_data(unsigned char wdata);
void write_cs1(unsigned char cs1_data);
void write_cs2(unsigned char cs2_data);
void set_xy(unsigned char x_page,unsigned char y);
void set_xytemp(unsigned char x_page,unsigned char y);
void SetOnOff(unsigned char onoff);
void PARAMETER_SETDISP(void);
void PARAMETER_SET(void);
void PJZCS(void);
void init_time0(void);
void clear_lcd(void);
void display_number(unsigned char x_line,unsigned char y_line,unsigned char lcd_x );
void display_number_decimal(void);
void disp_number(unsigned char x_line,unsigned char y_line,unsigned char lcd_x,unsigned char jj );
void init_lcd(void);
void DISPLY_CLOCK (void);
void oil_pump_open (void);
void oil_pump_off (void);
void main_axis_open (void);
void main_axis_off (void);
void electricity_valve_open (void);
void electricity_valve_off (void);
unsigned char RTEEPROMReady(void);
unsigned char HB1=6,HB2=0,HB3=0,HB4=2,HB5=0;
unsigned char keycytemp;
unsigned char pjyx_flag[20]={0,0,0,0,0,0,0,0,0,0,OPENBZ,0,0,0,0}; //按鍵子程序暫存值
unsigned char setupdisp_flag=0,setupitem_flag=0;
unsigned char valve_state_flag=OPENBZ,halfauto_state=0,auto_state=0;
unsigned char ryear=11,rmonth=11,rday=11,rhour=11,rminute=11,rsecond,rweek;
unsigned char wyear=12,wmonth=12,wday=12,whour=12,wminute=12,wsecond,wweek;
unsigned char maojietime=0,maojietime_plan,zhuangangle=0,zhuangangle_plan;
unsigned int temp,geishusum=0,geishusumtemp=55,user_password=4,passwordtime=0;
unsigned int passwrodjishu=0,geishusum1=0,geishusumtemp1=55;
unsigned char passstate=0;
unsigned char time0=0,time1=0;time2=0,time3=0,time4=0;
unsigned char cortrolMODEL=0,temp1,main_flag;
const unsigned char control_mode[]={ //控制方式
0xBA,0xCE,0xD1,0xEE,0xB9,0xE2,0xC1,0xD9,0xA1,0xA0,0xA1,0xA0,0xA1,0xA0,
0xB3,0xA4,0xC9,0xB3,0xB8,0xDF,0xD7,0xBF,0xC1,0xA2,0xB9,0xE2,0xB5,0xE7
};
void TIMER1_INIT(void)
{ CLI();
TCCR1A=0;
TCCR1B=0x02; //8分頻
TCNT1=0x00; //;從(0-30D4)匹配
OCR1A=0x30d4;//1M主頻8分頻 基本定時單元
TIMSK= 0x40; //;定時中斷時間100MS,定時常數為30D4
SEI();
}
#pragma interrupt_handler ZDCS1:14
void ZDCS1(void) //0.1s定時
{ unsigned char i,j;
TCNT1=0x00;
if (time1>0) time1=time1-1;
if (time0>9) //1s進來一次
{if (time2>0) time2--;
if (time3>0) time3--;
if (time4>0) time4--;
time0=0;
}
time0++;
//eor_resc;
if (maojietime_plan>0) maojietime_plan--;
if (zhuangangle_plan>0) zhuangangle_plan--;
}
//}
/*****************************************************************
* 名稱:delay()
* 延時n個ms
* 入口參數:n
* 出口參數:無
*****************************************************************/
void delay(unsigned int n)
{
unsigned int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=10;j++)
;
}
}
void delay_10us(void)
{
unsigned char y;
for (y=0; y<20; y++)
{
;
}
}
unsigned char RTEEPROMReady(void)
{
return !(EECR & 0x02);
}
void WC(unsigned char da_data)
{CS2450; //74HC245片選
DI0;
RW0;
delay(200);
PORTA=da_data;
delay(10);
A91;
delay(50);
A90;
DI1;
RW1;
A91;
CS2451;
delay(200);
}
void WD(unsigned char da_data)
{ CS2450;
DI1;
RW0;
delay(200);
PORTA=da_data;
A91;
delay(50);
A90;
DI1;
RW1;
A91;
CS2451;
delay(200);
}
void DEM(void)
{unsigned char i,j;
WC(0x80);
for(i=0;i<14;i++)
{
WD(control_mode[i]);
delay(50);
}
WC(0x90);
for(i=14;i<28;i++)
{
WD(control_mode[i]);
delay(50);
}
delay(200);
}
void DIS(void)
{unsigned char ii=2,jj=60,kk=20;
DIS2:
WC(0x80);
DIS0:
WD(ii);
ii=ii+1;
jj=jj-1;
if(jj!=0) goto DISA;
else goto exit;
DISA:
kk=kk-1;
if(kk!=0) goto DIS0;
kk=20;
WC(0x90);
DIS1:
WD(ii);
jj=jj-1;
kk=kk-1;
if(kk!=0) goto DIS1;
else {delay(200);
goto DIS2;
}
exit:
;
}
void DISP(void)
{unsigned char ii=4,jj=10,dph=0xb0,dpl=0xa0;
WC(0X80);
}
/*****************************************************************
* 名稱: clear_lcd())
*
* 入口參數:n
* 出口參數:無
*****************************************************************/
void clear_lcd()
{unsigned char i,j;
CS2450;
DI0;
RW0; //功能1設置
PORTA=0x30;
CS2451;
for(i=0;i<5;i++)
{A91;
delay(20);
A90;
}
DI1;
delay(10);
WC(0x0c);
WC(0x06);
//WC(0x30);
WC(0x01);
DEM();
delay(50);
//WC(0x01);
//delay(50);
//DIS();
//delay(200);
//WC(0x01);
//delay(200);
}
//**************主程序***************
void main(void)
{unsigned char i=0xaa,j=0;
SP=0X45F;
MCUCR=0x00;
SFIOR|=0X40;
TIMER1_INIT();
SEI();
DDRA=0XFF;
PORTA=0XFF;
DDRB=0X7E;
PORTB=0XFF;
DDRC=0XFF;
PORTC=0XFF;
DDRD=0XFF;
PORTD=0Xff;
DDRE=0XFF;
PORTE=0XFF;
delay(50);
clear_lcd();
while(1)
{delay(10);}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -