機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
SC2262_用PIC-C語言解碼程序(測(cè)試OK)
SC2262_用PIC-C語言解碼程序(測(cè)試OK)
 更新時(shí)間:2008-7-27 16:51:42  點(diǎn)擊數(shù):3
【字體: 字體顏色

#ifndef __GENERIC_TYPE_DEFS_H_
#define __GENERIC_TYPE_DEFS_H_

typedef enum _BOOL { FALSE = 0, TRUE } BOOL;
typedef unsigned char       BYTE;               // 8-bit
typedef unsigned short int  WORD;               // 16-bit
typedef unsigned long       DWORD;              // 32-bit

typedef union _BYTE_VAL
{
    BYTE val;
    struct
    {
        unsigned char b0:1;
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;
        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
    } bits;
} BYTE_VAL;

typedef union _WORD_VAL
{
    WORD val;
    BYTE v[2];
    struct
    {
        BYTE LB;
        BYTE HB;
    } byte;
    struct
    {
        unsigned char b0:1;
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;
        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
        unsigned char b8:1;
        unsigned char b9:1;
        unsigned char b10:1;
        unsigned char b11:1;
        unsigned char b12:1;
        unsigned char b13:1;
        unsigned char b14:1;
        unsigned char b15:1;
    } bits;
} WORD_VAL;

typedef union _DWORD_VAL
{
    DWORD val;
    WORD w[2];
    BYTE v[4];
    struct
    {
        WORD LW;
        WORD HW;
    } word;
    struct
    {
        BYTE LB;
        BYTE HB;
        BYTE UB;
        BYTE MB;
    } byte;
    struct
    {
        unsigned char b0:1;
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;
        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
        unsigned char b8:1;
        unsigned char b9:1;
        unsigned char b10:1;
        unsigned char b11:1;
        unsigned char b12:1;
        unsigned char b13:1;
        unsigned char b14:1;
        unsigned char b15:1;
        unsigned char b16:1;
        unsigned char b17:1;
        unsigned char b18:1;
        unsigned char b19:1;
        unsigned char b20:1;
        unsigned char b21:1;
        unsigned char b22:1;
        unsigned char b23:1;
        unsigned char b24:1;
        unsigned char b25:1;
        unsigned char b26:1;
        unsigned char b27:1;
        unsigned char b28:1;
        unsigned char b29:1;
        unsigned char b30:1;
        unsigned char b31:1;
    } bits;
} DWORD_VAL;

#endif //__GENERIC_TYPE_DEFS_H_

//===================================

#include <pic.h>
#include "basicTYPE.h"
/*
地址碼為0xF7, 0xC1,命令為0x30或者0x0C
950PL2,無優(yōu)化,9級(jí)優(yōu)化
*/
/*
;主頻率4m,單條匯編指令1US
;b=350us.周期1400us。
;
;0   1b  3b  
;1   3b  1b
;同步頭  1b  31b
;24脈沖,接收不反向;
*/
#define RECIO  RA3 //接收管腳
BYTE  rec_time=31;  //最多31次接收
BYTE  rec_pulse;  //24脈沖記數(shù)單元
struct
{
 BYTE  over :1;
 BYTE  type :1;
 BYTE  equ :1;
 BYTE  ramval  :1;
 BYTE  idle :1;
 BYTE    :3;
 
}recflag;
BYTE  recadd_h;
BYTE  recadd_m;
BYTE  recadd_l;
BYTE  cmd_data;

BYTE  savedata_h;
BYTE  savedata_m;
BYTE  savedata_l;

void delay_150us(void)
{
 BYTE  i=30;
 while(i--);
 CLRWDT();
}
void delay_30us(void)
{
 BYTE  i=5;
 while(i--);
 CLRWDT();
}

void main(void)
{
 BYTE  temp;
 CLRWDT();
 ADCON1=0X07;
 T1CON=0;
 PORTA=0;
 PORTB=0;
 TRISA=0X0C;
 TRISB=0XAD;
 
 //OPTION=0X0B;
 
 while(1)
 {
  while(recflag.over==0)
  {
   recadd_h=0;
   recadd_m=0;
   recadd_l=0;
   cmd_data=0;
   if(rec_pulse--)
   {
    temp=0;
    recflag.over=0;  //
    while(RECIO==0)  //循環(huán)體執(zhí)行一次40us
    { 
     delay_30us();  
     temp++;
     if(temp>50)
     {
      temp=0;
      break;
     }
    }
    if((RECIO==0)&&(temp==0))
    continue;   //脈沖次數(shù)減一
    
    for(rec_pulse=0;rec_pulse<24;rec_pulse++) 
    {
     delay_150us();
     if(RECIO==0)  //高電平時(shí)間太短,視為抖動(dòng),跳出
     break;
     while(RECIO); //依然為高,等待低電平
     temp=0;   //后續(xù)計(jì)數(shù)用
     while(RECIO==0) //循環(huán)體執(zhí)行一次40us
     { 
      delay_30us();  
      temp++;
      if(temp>50)  
      {
       temp=0;
       break;
      }
     }
     if(temp==0)   //
     {
      //超時(shí)退出
      break;   //跳到for之外
     }
     else if(temp>10)  //大于720US,認(rèn)為為0,否則為1
     {
      //記錄0
      recflag.ramval=0;
     }
     else
     {
      //記錄1
      recflag.ramval=1;
     }
     temp=0;
     #asm
     BCF      _STATUS,0;      
            RLF      _cmd_data,f  ;         
            RLF      _recadd_l,f  ;         
            RLF      _recadd_m,f  ;         
            RLF      _recadd_h,f  ;//從左到右,按11H,10H,0FH,0EH排列,整體左移補(bǔ)0
            #endasm
            if(recflag.ramval==1)
            cmd_data|=0x01;  
       
    }
    if(rec_pulse>20)
    {
     //rec_pulse=0;
     recflag.over=1;
     CLRWDT();
     break;
    }
    
   }
   else
   {
    break;   //最多31次循環(huán)
   }
 
  

 
 
  
  }

 } 
}

  • 上一篇: HCS301_跳碼解碼程序
  • 下一篇: 采用2051設(shè)計(jì)的無線防盜報(bào)警器
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1