基于嵌入式Linux和ZigBee技术的智能家居系统 - 图文(9)

2019-08-01 23:23

山 东 省 应 用 物 联 网 设 计 大 赛

//以下为室内自动照明用到的

#define uint unsigned int #define uchar unsigned char

#define led1 P1_0 #define led2 P1_1 #define led3 P1_2 #define led4 P1_3

int inout=0; int count=0; int num=2750;

int ru=0,chu=0,churu=0; //进入室内、出去;

int yx=0; //有效,出入计数有效(防止手臂摆动等多次计数) int ii=0; int js=0;

unsigned char send_buf[2]; unsigned char light=17;

void getGuangM(void) {

P0DIR &= 0x7f; ADCIF = 0; //清EOC标志 ADCH &= 0X00;

37

山 东 省 应 用 物 联 网 设 计 大 赛

//P0.7做ad口 APCFG |= 0X80;

//单次转换,参考电压为电源电压,对P07进行采样 ADCCON3 = 0xb7; //等待转化是否完成

while(!(ADCCON1&0x80)); //送数据的第5个字节AD转换的高位 send_buf[0] = ADCH;

//送数据的第6个字节AD转换的低位 send_buf[1] = ADCL; }

//io--P0及外部中断初始化 void io_init(void) {

//P0中断标志清0 //P0IFG |= 0x00; P0IFG = 0x00;

P0DIR &= ~0x30; //将P0.4 P0.5 设置为输入

//P0.4有上拉、下拉能力 P0INP &= ~0x30; //P0.4和P0.5中断使能 P0IEN |= 0x30;

//P0.4和P0.5,改为上升沿触发 下降沿触发 PICTL &= ~0x01;

38

山 东 省 应 用 物 联 网 设 计 大 赛

//开中断 EA = 1;

//端口P0中断使能 IEN1 |= 0X20;

P0DIR &= ~0x40; //将P0.6 设置为输入 PICTL &= ~0x01; //P0.6 设置为上升沿触发 P0IEN |= 0x40; //P0.6中断使能

P0DIR &= ~0x08; //将P0.3 设置为输入

PICTL &= ~0x01; //P0.3 设置为上升沿触发(实际是整个P0口都设置为上升触发) P0IEN |= 0x08; //P0.3中断使能

P0DIR &= ~0x01; //将P0.0 设置为输入

PICTL &= ~0x01; //P0.0 设置为上升沿触发(实际是整个P0口都设置为上升触发) P0IEN |= 0x01; //P0.0中断使能

P0DIR &= ~0x02; //将P0.1 设置为输入

PICTL &= ~0x01; //P0.1 设置为上升沿触发(实际是整个P0口都设置为上升触发) P0IEN |= 0x02; //P0.1中断使能 }

//io--P1及外部中断初始化-----P1.4-7设置为外部中断 void io_P1_init(void) {

39

山 东 省 应 用 物 联 网 设 计 大 赛

P1SEL &= ~0Xf0; //设置P1.4-7为普通IO口 P1DIR &= ~0Xf0; // 在P1.4-7口,设置为输入模式 P1INP &= ~0xf0; //打开P1.4-7上拉电阻,不影响

//设为输入

//P1DIR|=0x0f; //P1口低4位设置为输出 //P1DIR&=0x0f; //在上面的基础上,高4位设置为输入

//P1中断标志清0 P1IFG &= 0x00; //P1.4--P1.7中断使能 P1IEN |= 0xf0;

//上升沿触发 下降沿触发 PICTL &= ~0x04; //开中断 EA = 1;

//端口P1中断使能 IEN2 |= 0X10; }

/**************************** 延时函数

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

void Delayms(unsigned int xms) //i=xms 即延时i毫秒 {

40

山 东 省 应 用 物 联 网 设 计 大 赛

unsigned int i,j; for(i=xms;i>0;i--) for(j=587;j>0;j--); }

void Delay(unsigned int m) //unsigned char m {

int i=0,j=0; for(i=0;i<1000;i++) {

for(j=0;j < m; j++); } }

//LED灯初始化 void led_init(void) {

//P1为普通 I/O 口 //P1SEL &=~0x0f; P1SEL =0;

// P1.0 P1.1 P1.2 P1.3 设置为输出 P1DIR |= 0x0F; //关闭LED1 LED1=1; //关闭LED2 LED2=1;

41


基于嵌入式Linux和ZigBee技术的智能家居系统 - 图文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:重庆市化工园区物流项目压矿正文 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: