• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: DSM501A  

资源简介

粉尘传感器DSM501A基于51单片机编写的C语言示例代码.

资源截图

代码片段和文件信息


#include

#define uchar unsigned char
#define ulong  unsigned long
#define ledg  RC4
#define ledr RC6
#define ledh RC3

uchar sumsum1num2sum2;
ulong stat;
bit flag1sflag10msflag5s;


void main(void)
{
  TRISC=0x07;
  TRISE=0x07;
  TRISA=0xff;
  TRISB=0xff;
  TRISD=0xff;
  T1CON=0X01;   //timer1使能,选择内部时钟,1:1的预分频比
  T0CS=0;  //timer0时钟源选择为内部指令周期 Fosc/4
  PSA=1;   //预分频器分配给WDT 及Timer0 获得1:1 的预分频比
  TMR1IF=0;  //timer1溢出中断标志位 , 0 = Timer1 寄存器未溢出
  TMR1IE=1; //Timer1 溢出中断允许位,1 = 允许Timer1 溢出中断
  T0IE=0; //Timer0 中断允许位,0= 禁止Timer0 中断
  T0IF=0; //Timer0 溢出中断标志位,0 = Timer0 寄存器未溢出
  TMR0=0x00; //当TMR0 计数出现计满返回时, T0IF 位将被置1。
  TMR1H=0xff; //16位递增计数器,可通过TMR1H:TMR1L寄存器对访问。
  TMR1L=0x16;
  PIR1=0;
  PEIE=1;  //外设中断允许位 1 = 允许所有未被屏蔽的外设中断
//  INTEDG=0;   //中断触发边沿选择位,1 = INT 引脚的上升沿触发中断,0 = INT 引脚的下降沿触发中断
  INTE=1;  // RA2/INT 外部中断允许位,1 = 允许RA2/INT 外部中断,0 = 禁止RA2/INT 外部中断
  INTF=0;  //RA2/INT 外部中断标志,1 = RA2/INT 外部中断发生(必须用软件清零),0 = RA2/INT 外部中断没有发生
  GIE=1; //全局中断允许位,1 = 允许所有未被屏蔽的中断,·10 = 禁止所有中断



  while(1)
  {
    if(flag5s)
    {
      flag5s=0;
      stat=stat/5000000;
      stat=stat*100;
      if(sta

评论

共有 条评论

相关资源