?? 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: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Chenxibing
** Modified date: 2005-01-20
** Version:
** Descriptions: AD轉換實驗。
**
********************************************************************************************************/
#include "config.h"
uint32 ADC_Data;
char str[20];
void delay (unsigned int i) { /* Delay function */
unsigned int n;
while(i>1)
{
for(n=65535;n>1;n--);
i--;
}
}
/*
*******************************************************************************************************
** 函數名稱 :AD_int()
** 函數功能 :AD轉換完成中斷
** 入口參數 :無
** 出口參數 :無
*******************************************************************************************************
*/
void AD_int (void)
{
ADC_Data = AD0DR3; // 讀取ADC結果
//ADC_Data = AD0GDR; // 讀取ADC結果
ADC_Data = (ADC_Data >> 6) & 0x3ff;
ADC_Data = ADC_Data * 2475; // 參考電壓經過3/4分壓:3300*3/4
ADC_Data = ADC_Data / 1024; // 在此設置端點,觀察AD轉換結果
VICVectAddr = 0x00;
}
/*
*******************************************************************************************************
** 函數名稱 :main()
** 函數功能 :進行3通道電壓ADC轉換,中斷方式。
** 調試說明 :在AD_int中設置斷點,觀察AD轉換的值。
*******************************************************************************************************
*/
int main (void)
{
PINSEL0 = 0x00000005; // 管腳連接串口
PINSEL1 = 1 << 28; // P0.30連接到AD0.3
IRQEnable();
/* 設置ADC中斷IRQ */
VICIntSelect = 0x00; /* 所有中斷通道設置為IRQ中斷 */
VICVectCntl0 = 0x20 | 18; /* 中斷通道分配最高優先級 */
VICVectAddr0 = (uint32)AD_int; /* 設置中斷服務程序地址 */
VICIntEnable = 1 << 18; /* 使能ADC中斷 */
IO1DIR=0x00FF0000;
/* 進行ADC模塊設置 */
AD0INTEN |= 8; // AD0.3轉換完成產生中斷
AD0CR = (1 << 3) | // SEL=8,選擇通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,轉換時鐘為1MHz
(0 << 16) | // BURST=0,軟件控制轉換操作
(0 << 17) | // CLKS=0, 使用11clock轉換
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(1 << 24) | // START=1,直接啟動ADC轉換
(0 << 27); // 直接啟動ADC轉換時,此位無效
//ADC_Data = AD0GDR; // 清除DONE標志位
ADC_Data = AD0DR3; // 清除DONE標志位
while (1)
{
IO1CLR=0x00FF0000;
delay(100);
IO1SET=0x00FF0000;
delay(100);
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -