1、温度、ADC、开关量数据采集与报警处理,功能如下
2、嵌入式系统硬件基本构成
3、软件系统
1)、采集温度、模拟电压以及按键开关量(门禁)
get_temperture()温度
get_adc()模拟量
get_di()开关量
2)、定时(间隔2秒)上报数据
定时中断,每2秒触发一次上报任务
3)、温度大于25度,峰鸣器报警
if(get_temperture()) beep_on()
else beep_off()
4)、接收UART指令,led 1 on 则把LED灯打开/反之led 1 off
4、程序
//#include "s5pc100.h"
#include "uart.h"
extern void printf (const char *fmt, ...);
void uart0_send_char(char);
/***VIC0ADDRESS-REG***/
#define VIC0VECTADDR25 *(volatile unsigned int*)0xE4000164
#define VIC1VECTADDR10 *(volatile unsigned int*)0xe4100128
#define VIC0INTENABLE *(volatile unsigned int*)0xE4000010
#define VIC1INTENABLE *(volatile unsigned int*)0xe4100010
#define VIC0ADDRESS *(volatile unsigned int*)0xE4000F00
#define VIC1ADDRESS *(volatile unsigned int*)0xE4100F00
#define VIC2ADDRESS *(volatile unsigned int*)0xE4200F00
void do_irq(void)
{
((void (*)(void))VIC0ADDRESS)();
VIC0ADDRESS = 0;
VIC1ADDRESS = 0;
VIC2ADDRESS = 0;
}
/***Uart-REG***/
#define GPA0CON *(volatile unsigned int *)0xe0300000
#define ULCON0 *(volatile unsigned int *)0xec000000
#define UCON0 *(volatile unsigned int *)0xec000004
#define UTRSTAT0 *(volatile unsigned int *)0xec000010
#define UTXH0 *(volatile unsigned int *)0xec000020
#define URXH0 *(volatile unsigned int *)0xec000024
#define UBRDIV0 *(volatile unsigned int *)0xec000028
#define UDIVSLOT0 *(volatile unsigned int *)0xec00002c
#define UINTP0 *(volatile unsigned int *)0xEC000030
#define UINTSP0 *(volatile unsigned int *)0xEC000034
#define UINTM0 *(volatile unsigned int *)0xEC000038
#define UART_RXD_MASK 0x01
#define UART_ERR_MASK 0x02
#define UART_TXD_MASK 0x04
#define UART_MODEM_MASK 0x08
/***Time1-REG***/
#define TCFG0 *(volatile unsigned int *)0xea000000
#define TCFG1 *(volatile unsigned int *)0xea000004
#define TCON *(volatile unsigned int *)0xea000008
#define TCNTB1 *(volatile unsigned int *)0xea000018
#define TCMPB1 *(volatile unsigned int *)0xea00001c
/***Time4-REG***/
#define TCNTB4 *(volatile unsigned int *)0xea00003c
#define TINT_CSTAT *(volatile unsigned int *)0xEA000044
/***IIC-REG***/
#define I2CCON0 *(volatile unsigned int*)0xEC100000
#define I2CDS0 *(volatile unsigned int*)0xEC10000C
#define
#include "uart.h"
extern void printf (const char *fmt, ...);
void uart0_send_char(char);
/***VIC0ADDRESS-REG***/
#define VIC0VECTADDR25 *(volatile unsigned int*)0xE4000164
#define VIC1VECTADDR10 *(volatile unsigned int*)0xe4100128
#define VIC0INTENABLE *(volatile unsigned int*)0xE4000010
#define VIC1INTENABLE *(volatile unsigned int*)0xe4100010
#define VIC0ADDRESS *(volatile unsigned int*)0xE4000F00
#define VIC1ADDRESS *(volatile unsigned int*)0xE4100F00
#define VIC2ADDRESS *(volatile unsigned int*)0xE4200F00
void do_irq(void)
{
((void (*)(void))VIC0ADDRESS)();
VIC0ADDRESS = 0;
VIC1ADDRESS = 0;
VIC2ADDRESS = 0;
}
/***Uart-REG***/
#define GPA0CON *(volatile unsigned int *)0xe0300000
#define ULCON0 *(volatile unsigned int *)0xec000000
#define UCON0 *(volatile unsigned int *)0xec000004
#define UTRSTAT0 *(volatile unsigned int *)0xec000010
#define UTXH0 *(volatile unsigned int *)0xec000020
#define URXH0 *(volatile unsigned int *)0xec000024
#define UBRDIV0 *(volatile unsigned int *)0xec000028
#define UDIVSLOT0 *(volatile unsigned int *)0xec00002c
#define UINTP0 *(volatile unsigned int *)0xEC000030
#define UINTSP0 *(volatile unsigned int *)0xEC000034
#define UINTM0 *(volatile unsigned int *)0xEC000038
#define UART_RXD_MASK 0x01
#define UART_ERR_MASK 0x02
#define UART_TXD_MASK 0x04
#define UART_MODEM_MASK 0x08
/***Time1-REG***/
#define TCFG0 *(volatile unsigned int *)0xea000000
#define TCFG1 *(volatile unsigned int *)0xea000004
#define TCON *(volatile unsigned int *)0xea000008
#define TCNTB1 *(volatile unsigned int *)0xea000018
#define TCMPB1 *(volatile unsigned int *)0xea00001c
/***Time4-REG***/
#define TCNTB4 *(volatile unsigned int *)0xea00003c
#define TINT_CSTAT *(volatile unsigned int *)0xEA000044
/***IIC-REG***/
#define I2CCON0 *(volatile unsigned int*)0xEC100000
#define I2CDS0 *(volatile unsigned int*)0xEC10000C
#define