基于C8051F的AD UART0 KEY FLASH TIME3程序
// Main.c
//------------------------------------------------------------------------------------
// Copyright (C) 2011 Shenyang 213.
// Wbr
// Tool chain: KEIL Full c
//
//#pragma CD OE DB SB // Compilation directives
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include "C8051F340.h"
#include "1302.h"
#include "lcd.h"
#include
#define SYSCLK 12000000 // SYSCLK frequency in Hz
//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------
#define uint unsigned int
#define uchar unsigned char
#define T 1800 //運算電量的時間單位1800是半個小時(1800秒)
#define N 11
sfr16 TMR2 = 0xCC; //定義成16位地址
sfr16 ADC0 = 0xBD;
uint xdata ADCbuffer1[N];
uint count;
uint sum = 0;
uchar ADcount = 0;
uchar ADsend;
uchar Page = 1,direction = 1;
uchar set = 0,ent = 0,Tset;
uchar TH,TL,TT1,TT2,TT3; //用來拆分送顯示的變量
uchar keybuffer[6];
uchar BGset=0; //BGset背光關,開控制量,如果沒有鍵按下超過1分鐘,關閉背光!有鍵按下立刻開背光
bit Disptime,PDD;
sbit DI1 = P0^0 ;
sbit DI2 = P0^1 ;
sbit DE = P0^6 ;
sbit BLK = P0^7 ; //LCD背光
sbit JC1 = P2^7 ;
sbit JC2 = P3^1 ;
sbit JC3 = P3^2 ;
sbit JC4 = P3^3 ;
sbit DI3 = P3^6 ;
sbit DI4 = P3^7 ;
uchar code CPT_c[20] _at_ 0x8000; //7k的地址左右//充電時間要存入的FLASH地址,保存3天的時間和功率
uchar xdata CPT_x[20] _at_ 0x8000;
uchar code FPT_c[20] _at_ 0x8200; //7k的地址左右//放電時間要存入的FLASH地址,保存3天的時間和功率
uchar xdata FPT_x[20] _at_ 0x8200;
uchar xdata Between[20]; //0~11時間12~19存功率
////////////////////////////////////
extern void Init_Device(void);
extern uchar time_buf1[8] ;
uchar code tab1[]={
"實時電壓:"
};
uchar code tab2[]={
"實時電流:"
};
uchar code tab3[]={
"實時功率:"
};
uchar code tab4[]={
"運行狀態:"
};
uchar code tab5[]={
"歷史充電記錄"
};
uchar code tab6[]={
"歷史放電記錄"
};
uchar code tab7[]={
"當前時間"
};
uchar code tab8[]={
"修改時間"
};
uchar code tab9[]={
"暫無記錄"
};
uchar code run1[]={
"停機"
};
uchar code run2[]={
"充電"
};
uchar code run3[]={
"放電"
};
uchar code run4[]={
"故障"
};
//uchar code run5[]={
//"系統故障信息"
//};
uchar code run5[]={
"感謝您的使用"
};
uchar code run6[]={
"本日累計充電"
};
uchar code run7[]={
"本日累計放電"
};
uchar code run8[]={
"版本號:V1.0"
};
uchar xdata TAB[11]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};//數字0~9及顯示空白0x20
//----------------------------------------
// Function PROTOTYPES
//----------------------------------------
void delayms(uint ms)
{
uint Temp;
while(ms--)
{
Temp=1000;
while(Temp--);
{
//PCA0CPH2 = 1;
}
}
}
/*void Timer2_Init(int count2s)
{
TMR2CN = 0x00;
TMR2L = -count2s;
TMR2 = 0xffff;
ET2 = 1;
TR2 = 1;
}*/
//================================
//中值濾波程序
//================================
void filter()
{
static uchar count,i,j;
uint value_buf[N];
uint temp;
sum=0;
for(count=0;count
{
value_buf[count] = ADCbuffer1[count];;
}
for (j=0;j
{
for (i=0;i
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
for(count=1;count
主站蜘蛛池模板:
南城县|
新乡县|
陵川县|
中山市|
高青县|
花莲县|
洛阳市|
会宁县|
深圳市|
合阳县|
台中市|
佳木斯市|
青浦区|
延寿县|
宁武县|
青冈县|
四子王旗|
涿州市|
临洮县|
浦县|
肥城市|
青阳县|
满城县|
塘沽区|
云南省|
文成县|
中超|
江北区|
宁安市|
黔西县|
左云县|
得荣县|
稷山县|
蒙山县|
合阳县|
崇明县|
新郑市|
监利县|
三台县|
东乡族自治县|
南阳市|
sum += value_buf[count];
}
void Uart0_SendData(uchar dat0)
{
SBUF0=dat0; //寫SBUF0,開始發送
while(TI0==0); //等待發送
TI0=0; //清發送標志位
}
void Flash_Erase_CTP() //flash擦除充電時間和功率
{
EA =0;
VDM0CN = 0x80; // 使能VDD監視器
RSTSRC = 0x02; // 上電復位VDD監視器復位標志
FLSCL=0X80; // 使能FLASH單穩態定時器,FLASH讀時間SYSCLK<=25MHz
FLKEY = 0xA5; // 寫入關鍵字
FLKEY = 0xF1; // 寫入關鍵字
PSCTL |= 0x03; //允許擦,允許寫
CPT_x[0] = 0;
PSCTL &= ~0x03; //禁止寫,禁止擦
//EA = 1;
}
void Flash_Program_CTP() //flash寫入充電時間時間和功率
{
uchar j;
EA =0;
//Flash_Erase_CTP();
VDM0CN = 0x80; //使能VDD監視器
RSTSRC = 0x02; //上電復位/VDD監視器復位標志
FLSCL=0X80; //使能FLASH單穩態定時器,FLASH讀時間SYSCLK<=25MHz
PSCTL |= 0x01; //write enable
for(j =0;j<20;j++)
{
FLKEY = 0xa5;
FLKEY = 0xf1;
CPT_x[j] = Between[j];
//delayms(30);
}
PSCTL &= ~0x01; //禁止寫
EA = 1;
}
//***********************************
void Flash_Erase_FTP() //flash擦除放電時間和功率
{
EA =0;
VDM0CN = 0x80; // 使能VDD監視器
RSTSRC = 0x02; // 上電復位VDD監視器復位標志
FLSCL=0X80; // 使能FLASH單穩態定時器,FLASH讀時間SYSCLK<=25MHz
FLKEY = 0xA5; // 寫入關鍵字
FLKEY = 0xF1; // 寫入關鍵字
PSCTL |= 0x03; //允許擦,允許寫
FPT_x[0] = 0;
PSCTL &= ~0x03; //禁止寫,禁止擦
//EA = 1;
}
void Flash_Program_FTP() //flash寫入放電時間和功率
{
uchar j;
//Flash_Erase_FTP();
EA = 0;
VDM0CN = 0x80; //使能VDD監視器
RSTSRC = 0x02; //上電復位/VDD監視器復位標志
FLSCL=0X80; //使能FLASH單穩態定時器,FLASH讀時間SYSCLK<=25MHz
PSCTL|=0x01; //write enable
for(j =0;j<20;j++)
{
FLKEY = 0xa5;
FLKEY = 0xf1;
FPT_x[j] = Between[j];
}
PSCTL &= ~0x01; //禁止寫
EA = 1;
}
/*void Flash_Read()
{
static uchar j;
for(j=0;j<3;j++)
{
timer[j]=Ftime_c[j];
}
關鍵詞:
C8051FADUART0TIME
評論