单片机特殊知识(三)

1.光敏传感器的使用

        因为LED和光敏传感器靠的比较近,LED自身的灯光亮度会影响光敏值。要屏蔽自身光影响,可以使用PWM中断功能,在低电平期间再检测光敏值。

        从P点进入中断,处理光敏值,在高电平之前结束处理。

2.桥式电路

        (1)说明

        桥式电路是一种整流电路(rectifyingcircuit),由四只二极管口连接成“桥”式结构,作用是将交流变压电路输出的交流电转换成单向脉动性直流电。

        全波整流:频率翻倍;比如市电120V,60HZ,全波整流后是120HZ;

        半波整流:频率不变;比如市电120V,60HZ,全波整流后是60HZ;

        (2)应用----过零检测

        如果市电频率是60HZ,那周期就是1/60HZ=16.6ms。同步信息就按过零周期来计算:比如900个周期就是900*16.6ms约等于15s同步一次。具体可根据实际项目编写

3.快速掉电切换色温

        0.1S快速开关,可以1ms采集1个AD值,采集8个后取1次AD平均值(这个过程共8ms)。然后采集8次平均值,所以完成时间是8*8=64ms。8次平均值都低于设定的AD值,就可以切换1次色温,并将模档位写进EEPROM。

4.关于单片机跑飞原因

(1)可能是数组地址溢出

(2)单片机在while()循环跑飞程序

(3)程序在关闭定时中断或者其他中断时没处理好

        排查的方法是用IO口取反标记:比如串口发送函数,如果程序跑飞时,IO口一直为高电平就说明单片机这个while()循环死机,IO口为低电平就说明成功跳出while()循环;同样的方式可以用来排查一些子函数

void SendChar( unsigned char dat )
{
    
    f_tx_byte_over=0;
    UART0_TXD = dat;
    PT31DO=1;
    while(f_tx_byte_over==0);
    PT31DO=0;
}

5.idata \xdata\code的理解

(1)说明

                data:RAM低128字节,响应速度最快,采用直接寻址方式

                idata:RAM高128字节,采用间接寻址方式,速度相对较慢

                bdata:片内RAM,位寻址方式

                xdata:外部扩展RAM,采用DPTR访问

                pdata:外部扩展RAM低256字节,分页寻址(一页256byte)

                code:程序存储区

(2)示例:

        这颗芯片CODE有 16K字节,IRAM有256字节分为data(128字节)和idata(128字节),XRAM有768字节等

写程序要注意编译后的文件大小,超出内存程序不能运行;以下程序编译文件在内存范围之内

(3)用法

  • 如果没有特殊写法,程序的全局变量一般保存在data里面
  • uchar idata B_DELAY=0;就是保存在idata里面
  • uchar xdata  B_INIT_SHOW_DELAY=0;就是保存在xdata里面

6.倾倒开关的使用注意事项

        检测IO口高低电平时要在main()函数里面的while(),检测比较灵敏;过滤杂波时间可以在其他定时函数里面。

7.关于keil识别不到jlink设备或者电脑连接不上jlink的注意点

(1)检查是否安装jlink驱动。在设备管理器查看jlink设备

(2)检查jlink的四根线 VDD CLK  DIO  GND是否跟板子的烧录口一一对应?

(3)检查板子是否供电:芯片是否有5V电压?

(4)接4根线时,keil设置为SW;因为带隔离设备,所以jlink的频率选低点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值