#include 〈stdio.h>
#include "SN8F5702.h"
#include 〈intrins、h〉 // for _nop_ void InitCPU(void); //单片机初始化 void Ram_init(void); //全局变量赋值 void Time_Fun(void);?//基准走时函数
void SYSIspStart(unsigned int pageAddress);
//--—-—----—---—---—---—字节全局变量—----———---—--—--------—-------
u8 idata ISP_RAM[32] ; // IRAM 0xE0 to 0xFF #define??WenDu_Up??ISP_RAM[1] #define? WenDu_Down ISP_RAM[2] #define WenDu_Cha? ISP_RAM[3] // ?u8 WenDu_Up; // u8 WenDu_Down; u8?WenDu_HJ;
u8?ADC_WenDu_HJ; u8?AD_key;
u8?Time_500ms_Cnt;
?u8 Temp_ChaZhi_ID;//0显示环境温度,1显示差值闪烁 u8 SS_500Ms_Cnt;//500ms闪烁标志位 u8 IAP_Save_Cnt;//存储标志位
//----——-——--——-------位全局变量————---—---—-—-——-----—-——--—-——-—-
bit TimeFlag?;//定时标记 bit Buzz_Flag?;//蜂鸣器标志位
bit SS_500Ms_Flag?;//500ms闪烁标志位 ? bit ZiDong_ShouDong_Flag;//自动手动标志位 bit ShouDong_Out_Flag;//手动输出标志位 bit IAP_Save_Flag;//存储标志位
bit NTC_Error_Flag;//传感器错误 bit NTC_OK_Flag;//传感器错误 u8 code ISP_ROM[32] _at_ 0X0200;
//****************************************************************** #define ADC_GLOBAL #include ”、、\\inc\\config.h\
/*****************************************************************/ #define AD_DATA_CNT250?
const u16 code TEMP_AD_DATA[AD_DATA_CNT+1]= { 3138 ,0?//? 3100 , //?1
?3061 ,?// 2 3022 ,3?//? ?2982 , //?4 ?2941 , //?5 ?2899 , // 6 2857 , //7? ?2815 ,8?//? ?2771 , //?9 ?2728 , // 10 2684 ,?// 11 2639 ,?//12? 2595 , //?13 ?2550 ,14?//? 2504 ,15?//? 2459 ,16?//? 2413 ,?// 17 2367 , //?18 ?2321 ,?// 19 2276 , // 20 2230 ,21?//? ?2184 , //?22 ?2139 , //2?3 ?2093 ,?// 24 2048 ,?// 25 ?2003 , //?26 ?1959 ,27?//? 1914 , //?28 1870 ,?//?29 1827 ,?// 30 1784 ,?//?31 1741 ,?// 32 ?1699 ,?// 33 1658 ,?// 34 ?1617 , // 35 ?1577 , // 36 1537 , // 37 1498 , // 38 1459 ,?//39? ?1421 , //40? ?1384 ,?//?41 ?1348 ,?//42? ?1312 , // 43 1277 , //?44 ?1243 ,45?//?
1209 , //?46 1176 ,?// 47 1144 , //?48 1112 ,?// 49 1082 , // 50 1052 , //?51 1022 , // 52 994 , //?53 966 , //?54 938 ,?// 55 912 , // 56 ?886 , // 57 ?861 , // 58 ?836 , // 59 812 , // 60 789 , //?61 766 , // 62 ?744 ,63?//? 723 ,?//64? 702 , // 65 682 , //?66 662 , //?67 643 , // 68 624 , //?69 606 ,?// 70 589 , //?71 ?572 ,?// 72 ?555 , // 73 ?539 ,?// 74 ?524 , // 75 ?509 ,?// 76 494 , // 77 ?480 , // 78 ?466 ,?// 79 453 ,?//80? 440 ,?//?81 427 ,?// 82 415 , //?83 403 , // 84 392 , //?85 ?381 ,?// 86 370 ,8?//?7 360 ,?//?88 ?349 ,89?//?
?340 ,?// 90 ?330 , // 91 ?321 , // 92 312 ,?// 93 ?303 ,?// 94 ?295 ,?// 95 ?287 , // 96 ?279 ,?// 97
?271 , // 98 ?264 ,?// 99
};
void AD_fun(void)?// {
?static u8 AD_Sum_Cnt = 0,AD_ID=0; ?static u16 AD_Sum = 0;
?static u8 Temp_Change_Cnt=0; ?u8 i;
AD_Sum += Get_ADC(AD_ID); ?AD_Sum_Cnt ++; if(AD_Sum_Cnt 〉= 8) ?{ ?AD_Sum_Cnt = 0; AD_Sum 〉>= 3; if(1) ?{ ? if(!AD_ID) ?? {
????if(AD_Sum<40||AD_Sum〉4050) ? ? { ??NTC_Error_Flag = 1; ? } ??else ?{ ??? NTC_Error_Flag = 0; ? ? } ?? AD_ID=1;?? ? } }
? AD_Sum = 0;?? ?} }
u16 Get_ADC( uchar n) {
?u16 dat;//
?dat = 0; ?if(!n) ?{
??ADM = _1000_0000b;//AIN0通道 }
?else if(n==1) {
??ADM = _1000_0110b;//AIN6通道 ?}
?else if(n==2) ?{ ADM = _1000_0111b;//AIN7通道 }
?else if(n==3) { ADM = _1000_1000b;//AIN8通道 }
_nop_(); _nop_(); ADM |= _0100_0000b;?//开始转换
?while(!(ADM & _0010_0000b)); //转换中 ?_nop_(); ?_nop_();
?ADM &= _1101_1111b; ?dat = ADB; dat <<= 4;
?dat += (ADR&0x0f); _nop_(); ?_nop_(); return dat; }
void SYSIspStart(unsigned int pageAddress) { ISP(pageAddress, ISP_RAM); }
/***************************************************************? ? ? ?? ?
硬件初始化函数: 硬件初始化 输入输出 定时器开关 AD初始化 ?? ??? ****************************************************************/
void InitCPU(void)?//单片机初始化 {
?EAL=0; //关总中断