?? main.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: 李仲生
** Created date: 2007-03-05
** Version: 1.0
** Descriptions: 復位源識別實驗
**
**------------------------------------------------------------------------------------------------------
** Modified by: xuxiaoqun
** Modified date: 2008-05-08
** Version:
** Descriptions: 對代碼風格做部分調整
**
** Rechecked by : Litiantian
********************************************************************************************************/
#include "config.h"
#define BEEP (1 << 30) // P3.30控制蜂鳴器,低電平蜂鳴
#define KEY1 (1 << 12) // KEY1輸入腳P0.12
/*******************************************************************************************
** 函數名稱 :IO_Init
** 函數功能 :初始化相關的IO引腳
** 入口參數 :無
** 出口參數 :無
*******************************************************************************************/
void IO_Init(void)
{
PINSEL7 = 0x00000000; // 設置管腳連接GPIO
PINSEL0 = 0x00000000; // 設置管腳連接GPIO
FIO3DIR = BEEP; // 設置BEEP控制口為輸出
FIO3SET = BEEP; // BEEP停止蜂鳴
}
/*******************************************************************************************
** 函數名稱 :Delay1S
** 函數功能 :延時1秒左右
** 入口參數 :無
** 出口參數 :無
*******************************************************************************************/
void Delay1S(void)
{
uint32 i, dly;
for (dly = 0; dly < 50; dly++)
{
for (i = 0; i < 50000; i++);
}
}
/*******************************************************************************************
** 函數名稱 :Beep
** 函數功能 :控制蜂鳴器蜂鳴
** 入口參數 :無
** 出口參數 :無
*******************************************************************************************/
void Beep(int32 Tempval)
{
int i;
for (i = 0; i < Tempval; i++)
{
FIO3CLR = BEEP; // BEEP 蜂鳴
Delay1S();
FIO3SET = BEEP; // BEEP停止蜂鳴
Delay1S();
}
}
/*******************************************************************************************
** 函數名稱 :WDTON
** 函數功能 :初始化并啟動看門狗
** 入口參數 :無
** 出口參數 :無
*******************************************************************************************/
void WDTON(void)
{
while ((WDMOD & 0x04) == 0x04) // 清除看門狗超時標志
{
WDMOD = 0x00;
}
WDTC = 0xff000; // 設置看門狗定時參數約1秒
// 缺省的看門狗時鐘是4MHz的IRC
// 經4分頻后得到1MHz的頻率
WDMOD = 0x03; // 設置看門狗模式:中斷且復位
WDFEED = 0xAA; // 第一次喂狗啟動WDT
WDFEED = 0x55;
}
/*******************************************************************************************
** 函數名稱 :main
** 函數功能 :讀取RSID寄存器的值,檢測復位源的狀態位,并通過蜂鳴器的蜂鳴次數反映出來
** 調試說明 :1、使用短路器將JP1上的BEEP與P3.30、KEY1與P0.12短接;
** 2、調試時將程序下載到Flash中,然后脫機運行。
*******************************************************************************************/
int main(void)
{
uint8 Tempval = 0;
IO_Init(); // 初始化I/O口
Tempval = RSIR;
Tempval &= 0x0f; // 讀取RSIR寄存器低四位的值,這四位分別指示四個復位源的狀態
/* 由4個復位源標志位的值來決定蜂鳴器蜂鳴的次數 */
Beep(Tempval);
RSIR = 0x0000000f; // 清除各復位標志
WDTON(); // 初始化并啟動看門狗
while (1)
{
if (IO0PIN & KEY1) // 如果P0.12管腳為高電平
{
WDFEED = 0xAA; // 喂狗
WDFEED = 0x55;
}
}
return (0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -