“光敏开关”案例程序设计说明
1 工程文件下载:
2 程序设计流程图

3 相关寄存器设置
1) P0(8位)和P2.3需要设置成推挽输出,以驱动电路正常发光。按键作为输入,不需推挽,涉及寄存器及配置值如下:
P0M1=0x00;
P0M0=0xff;
P2M1=0x00;
P2M0=0x08;
2) 对于光照通过AD采集,涉及寄存器及配置如下:
P1ASF=0xff;
ADC_RES=0;
ADC_RESL=0; //AD转换结果寄存器清0
ADC_CONTR=0X8C; //10001100,打开AD转换电源,启动AD转换,后三位决定P1^4作为A/D输入
CLK_DIV=0X20; //设置AD转换结果保存格式
4 程序设计框架
4.1 void main()
(1)设置P0为推挽模式,设置P2^3为推挽模式,其它为准双向口模式
(2)开AD中断
(3)循环调用SEG_Display()方法显示datelight。
(4)利用flag控制P0的数值,来控制led灯的亮灭。
4.2 void InitADC_light()
初始化光照AD转换结果寄存器及控制寄存器
4.3 void adc_isr() interrupt 5 using 1
AD中断处理程序:
(1) 每中断AD一次,计数器time加1;
(2) 屏蔽所有中断;
IE=0x00;//00000000,屏蔽所有的中断申请
(3) 如果中断次数达到2500次,求光AD平均值,判断是否满足flag=~flag的条件。
(4) 重新开放AD中断。
ADC_CONTR&=~0X10;//ADC_FLAG=0,数模转换结束标志被程序清为0
ADC_CONTR|=0X08; //ADC_START=1,模数转换启动,结束后自动为0
5 相关寄存器知识




