松翰单片机 SN8F5702程序例程文档格式.docx

上传人:b****6 文档编号:20094538 上传时间:2023-01-16 格式:DOCX 页数:14 大小:17.83KB
下载 相关 举报
松翰单片机 SN8F5702程序例程文档格式.docx_第1页
第1页 / 共14页
松翰单片机 SN8F5702程序例程文档格式.docx_第2页
第2页 / 共14页
松翰单片机 SN8F5702程序例程文档格式.docx_第3页
第3页 / 共14页
松翰单片机 SN8F5702程序例程文档格式.docx_第4页
第4页 / 共14页
松翰单片机 SN8F5702程序例程文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

松翰单片机 SN8F5702程序例程文档格式.docx

《松翰单片机 SN8F5702程序例程文档格式.docx》由会员分享,可在线阅读,更多相关《松翰单片机 SN8F5702程序例程文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

松翰单片机 SN8F5702程序例程文档格式.docx

//自动手动标志位

bitShouDong_Out_Flag;

//手动输出标志位

bitIAP_Save_Flag;

bitNTC_Error_Flag;

//传感器错误

bitNTC_OK_Flag;

u8codeISP_ROM[32]_at_0X0200;

//******************************************************************

#defineADC_GLOBAL

..\inc\config.h"

/*****************************************************************/

#defineAD_DATA_CNT250

constu16codeTEMP_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,//23

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,//87

360,//88

349,//89

340,//90

330,//91

321,//92

312,//93

303,//94

295,//95

287,//96

279,//97

271,//98

264,//99

};

voidAD_fun(void)//

{

staticu8AD_Sum_Cnt=0,AD_ID=0;

staticu16AD_Sum=0;

staticu8Temp_Change_Cnt=0;

u8i;

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;

}

}

u16Get_ADC(ucharn)

u16dat;

//

dat=0;

if(!

n)

ADM=_1000_0000b;

//AIN0通道

elseif(n==1)

ADM=_1000_0110b;

//AIN6通道

elseif(n==2)

ADM=_1000_0111b;

//AIN7通道

elseif(n==3)

ADM=_1000_1000b;

//AIN8通道

_nop_();

ADM|=_0100_0000b;

//开始转换

while(!

(ADM&

_0010_0000b));

//转换中

ADM&

=_1101_1111b;

dat=ADB;

dat<

<

=4;

dat+=(ADR&

0x0f);

returndat;

}

voidSYSIspStart(unsignedintpageAddress)

ISP(pageAddress,ISP_RAM);

/***************************************************************

硬件初始化函数:

硬件初始化输入输出定时器开关AD初始化

****************************************************************/

voidInitCPU(void)//单片机初始化

EAL=0;

//关总中断

CLKSEL=_0000_0101b;

//内部32MRCFhosc/4分频

CLKCMD=0x69;

//时钟开关启动

CKCON=_0011_0001b;

//------------------------------I/O口输出--------------------------

//---------------P0---------------

P0M=_1111_1111b;

//P07=BUZZP06=COM6P05=COM5P04=COM4

P0UR=_0000_0000b;

//P03=COM3P02=COM2P01=COM1P00=LED1

P0=_0000_0000b;

//---------------P1---------------

//P1W=_0000_1000b;

P1M=_0011_1110b;

//P17=ADC7P16=ADC6P15=LED2P14=?

P1UR=_0000_0000b;

//P13=?

P12=?

P11=?

P10=ADC0_温度

P1=_0000_0000b;

//---------------P2---------------

P2M=_1111_1101b;

//P27=?

P26=?

P25=?

P24=?

P2UR=_0000_0000b;

//P23=?

P22=?

P21=ADC6P20=REY_OUT

P2=_0000_0000b;

//------------------------------INT--------------------------------

//PEDGE|=0x03;

//EX0G电平变换触发,双沿

//EX0=1;

//INT0isrenable

//PEDGE|=0x04;

//EX1G=0x01:

INT1Risingedgetrigger

//EX1=1;

//INT1isrenable

//PEDGE|=0x30;

//EX1G=0x11:

Bothrisingandfallingedgetrigger(Levelchangetrigger).

//IEN4|=0x40;

//INT2isrenable(EX2)

//====================PWM1设置======================

//PW1M=_1010_0000b;

//PW1CH=_0001_0000b;

//PW1YH=0;

//PW1YL=26;

//PW1DH=0;

//PW1DL=7;

//PW1A=5;

//PW1B=PW1D;

//------------------------------T0--------------------------------

TMOD=_0110_0110b;

//T0T18位自动装载

TH0=131;

//Initialvalues

TL0=131;

TCON0=_0010_0011b;

//T0=Fhsoc/32.T1=Fhsoc/16

ET0=1;

//Timer0isrenable

TR0=1;

//enableTimer0Runcontrol

//------------------------------T1--------------------------------

TH1=6;

//Initialvalues

TL1=6;

ET1=0;

//Timer1isrenable

TR1=0;

//enableTimer1Runcontrol

IP0=_0000_1000b;

IP1=_0000_1000b;

//----------------------AD配置--------------------------------------

ADM=_1000_0000b;

//AIN3通道

ADR=_0101_0000b;

//[ADR.5ADR.4]00=Fhosc/16,01=Fhosc/8,10=Fhosc/1,11=Fhosc/2

VREFH=_0000_0011b;

//参考电压VDD

P1CON=_1100_0001b;

P2CON=_0000_0010b;

//------------------------------------------------------------------

EAL=1;

//开总中断

voidRam_init(void)

NTC_OK_Flag=0;

//NTC测温OK后才继电器开始工作

WenDu_Up=30;

WenDu_Down=20;

WenDu_HJ=25;

Temp_ChaZhi_ID=0;

//0显示环境温度,1显示差值闪烁

_clrwdt();

for(i=0;

i<

20;

i++)

ISP_RAM[i]=ISP_ROM[i];

if(ISP_RAM[0]==0x55)

if(WenDu_Up>

99||WenDu_Down>

99||WenDu_Cha>

18)

ISP_RAM[0]=0x55;

ISP_RAM[1]=30;

ISP_RAM[2]=20;

ISP_RAM[3]=9;

_clrwdt();

SYSIspStart(0X0200);

else

ISP_RAM[0]=0x55;

ISP_RAM[1]=30;

ISP_RAM[2]=20;

ISP_RAM[3]=9;

_clrwdt();

SYSIspStart(0X0200);

}

//*****************************************************************//

//主函数//

voidmain(void)

InitCPU();

i=200;

while(i)

i--;

Ram_init();

while

(1)

if(TimeFlag)

TimeFlag=0;

Time_Fun();

//基准时间函数

_nop_();

//时间走时函数//

voidWork_Fun(void)

voidTime_Fun(void)

staticu8Time_4ms_Cnt=0,Time_10ms_Cnt=0,Time_100ms_Cnt=0,Time_250ms_Cnt=0;

staticu8Buzz_Cnt=0;

//***************充放电判断*********************

LedDisplay();

Time_4ms_Cnt++;

if(Time_4ms_Cnt>

=2)

Time_4ms_Cnt=0;

AD_fun();

Time_10ms_Cnt++;

if(Time_10ms_Cnt>

=5)

Time_10ms_Cnt=0;

KeyDataProcess();

Time_100ms_Cnt++;

if(Time_100ms_Cnt>

=50)

Work_Fun();

Time_100ms_Cnt=0;

//中断函数//

voidTimer0_ISR(void)interruptISRTimer0//Vector@0x0B

staticu8Time2MS=0;

Time2MS++;

if(Time2MS>

=16)//2MS中断函数

Time2MS=0;

TimeFlag=1;

if(Buzz_Flag)

BUZZ=!

BUZZ;

BUZZ=0;

//***************************************

voidTimer1_ISR(void)interruptISRTimer1//Vector@0x1B

;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1