久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 19923|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)紅外線萬(wàn)能學(xué)習(xí)遙控器

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76686 發(fā)表于 2015-4-12 01:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
      這款單片機(jī)紅外線萬(wàn)能學(xué)習(xí)遙控器,使用的單片機(jī)是STC15F104單片機(jī),長(zhǎng)按進(jìn)入學(xué)習(xí),這樣就有3個(gè)學(xué)習(xí)鍵,電路簡(jiǎn)單,容易制作,缺點(diǎn):測(cè)試了一下,效果不錯(cuò),但是還發(fā)現(xiàn)個(gè)問(wèn)小題,就是按鍵發(fā)射信號(hào)時(shí)稍微按久了點(diǎn)就會(huì)進(jìn)入從新學(xué)習(xí)的狀態(tài)中,這時(shí)已學(xué)習(xí)的波形也被擦除了。



;STC15F104E 3路學(xué)習(xí)萬(wàn)能遙控器
  ;內(nèi)部振蕩11.0592M

  ;EPPROM寄存器
  IAP_DATA EQU  0C2H
  IAP_ADDRH EQU 0C3H
  IAP_ADDRL EQU 0C4H
  IAP_CMD  EQU  0C5H
  IAP_TRIG EQU  0C6H
  IAP_CONTR EQU 0C7H
  ;***********************

  ;F38_4KHZ EQU 0FF70H ;38.4KHZ 1T MODE (65536-11059200/2/38400)
  ;F38_4KHZ EQU 0FFF4H ;38.4KHZ 12T MODE(65536-11059200/2/38400/12)

  AUXR EQU 08EH
  INT_CLKO EQU 08FH ;輸出時(shí)鐘使能
  

  K0 BIT P3.0;按鍵1
  K1 BIT P3.1;按鍵2
  K2 BIT P3.2;按鍵3
  LED BIT P3.3;指示燈
  IR BIT  P3.4;紅外接收頭
T1CLKO BIT P3.5;紅外發(fā)射管

;****************************
  ORG 0
  LJMP START
ORG 0BH
LJMP INT_T0;T0中斷
  ORG 30H

  START:;初始化
  MOV R0,#20H
  QL:
  MOV @R0,#0;內(nèi)存清0
  INC R0
  CJNE R0,#80H,QL

  ;MOV AUXR,#40H ; 1T
  MOV P3,#0FFH;拉高管腳
  MOV AUXR,#00H ;定時(shí)器12T模式
  MOV TMOD,#00H ;定時(shí)器16位自動(dòng)重裝
;--------------------
  MOV TH1,#0FFH ;38K方波定時(shí)T1
  MOV TL1,#0F4H
  SETB TR1
  ;MOV INT_CLKO,#02H;發(fā)射38K
  ;MOV INT_CLKO,#00H;停止發(fā)射
;-----------------------------
MAIN:;主程序
CALL KEY0
CALL KEY1
CALL KEY2
JMP MAIN
;-----------------------------

KEY0:
  JB K0,KEY0OUT
  CALL DELAY20MS;延時(shí)消抖
  JB K0,KEY0OUT
;-----------------
CALL OPEN_T0INT;打開(kāi)T0中斷判斷長(zhǎng)按
;-----------------
JBC 0,XUEXI0;長(zhǎng)按,跳轉(zhuǎn)到學(xué)習(xí)功能
JNB K0,$-3;短按等待放開(kāi)
;-----------------
CLR TR0;關(guān)T0
CLR ET0;關(guān)T0中斷
CLR EA;發(fā)射關(guān)中斷
MOV DPTR,#1000H;第1扇區(qū)
CALL FFSS;紅外發(fā)射
KEY0OUT:
RET
XUEXI0:;學(xué)習(xí)
MOV DPTR,#0;第1扇區(qū)
CALL ERASE;扇區(qū)擦除,做好寫(xiě)入準(zhǔn)備
MOV DPTR,#1;第1扇區(qū)第2字節(jié)
CALL XIEXI;紅外接收,存入第1扇區(qū)
RET

;************************
KEY1:
  JB K1,KEY1OUT
  CALL DELAY20MS;延時(shí)消抖
  JB K1,KEY1OUT
;-----------------
CALL OPEN_T0INT;打開(kāi)T0中斷判斷長(zhǎng)按
;-----------------
JBC 0,XUEXI1;長(zhǎng)按跳轉(zhuǎn)到學(xué)習(xí)
JNB K0,$-3;等待放開(kāi)
;-----------------
CLR TR0;關(guān)T0
CLR ET0;關(guān)T0中斷
CLR EA;關(guān)中斷
MOV DPTR,#1200H;第2扇區(qū)
CALL FFSS;紅外發(fā)射
KEY1OUT:RET
XUEXI1:;學(xué)習(xí)
MOV DPTR,#200H;第2扇區(qū)
CALL PDSQ;讀數(shù)判斷扇區(qū)是否為空
MOV DPTR,#201H;第2扇區(qū)第2字節(jié)
CALL XIEXI;紅外接收,存入第2扇區(qū)
RET


;************************
KEY2:
  JB K2,KEY2OUT
  CALL DELAY20MS;延時(shí)消抖
  JB K2,KEY2OUT
;-----------------
CALL OPEN_T0INT;打開(kāi)T0中斷判斷長(zhǎng)按
;-----------------
JBC 0,XUEXI2;長(zhǎng)按跳轉(zhuǎn)到學(xué)習(xí)
JNB K0,$-3;等待放開(kāi)
;-----------------
CLR TR0;關(guān)T0
CLR ET0;關(guān)T0中斷
CLR EA;關(guān)中斷
MOV DPTR,#1300H;第2扇區(qū)
CALL FFSS;紅外發(fā)射
KEY2OUT:RET
XUEXI2:;學(xué)習(xí)
MOV DPTR,#300H;第2扇區(qū)
CALL PDSQ;讀數(shù)判斷扇區(qū)是否為空
MOV DPTR,#301H;第2扇區(qū)第301字節(jié)
CALL XIEXI;紅外接收,存入第2扇區(qū)
RET


;***********************
PDSQ:;讀數(shù)判斷扇區(qū)是否為空,是空就擦除
MOV R1,#200;讀200個(gè)字節(jié)
ZDKA:;
CALL EEPROMR
INC DPTR
CJNE A,#0FFH,RESA;跳到扇區(qū)擦除
DJNZ R1,ZDKA;是否讀完
RET
RESA:
CALL ERASE;扇區(qū)擦除
RET
;*********************

;-----------------------
OPEN_T0INT:;打開(kāi)T0中斷
CLR 0;清長(zhǎng)按標(biāo)志位
MOV 2FH,#0;清計(jì)數(shù),每計(jì)一次70MS
MOV TH0,#0;定時(shí)器0初值
MOV TL0,#0
CLR TF0
SETB ET0;開(kāi)T0中斷
SETB TR0;開(kāi)T0
SETB EA
RET
;***************************
INT_T0:;T0中斷,判斷長(zhǎng)按,長(zhǎng)按標(biāo)志位0置1
INC 2FH;中斷計(jì)數(shù),
MOV A,2FH
CJNE A,#12,INT_T0OUT;70MS*12=840MS
SETB 0;置1
CLR TR0
CLR ET0
CLR EA
INT_T0OUT:
RETI
  ;***************************
  ;***************************
  XIEXI:;;紅外接收;存入EEPROMW
  PUSH DPL;保護(hù)指針
  PUSH DPH
  CLR 2;清判斷位
  CLR LED;亮燈
  MOV R1,#0;高電平和低電平總數(shù)
  CLR TR0;停止計(jì)時(shí)
X0: JB IR,X0;等待接收頭,無(wú)信號(hào)返回等待


  MOV TH0,#0;;定時(shí)器初值歸0
  MOV TL0,#0
  SETB TR0;有信號(hào)開(kāi)始計(jì)數(shù)
  ;-------------------
  WAIT0:JBC TF0,XOUT;等待超時(shí);超過(guò)70MS退出
  JNB IR,WAIT0;等待高電平到來(lái)
  CLR TR0;停止計(jì)數(shù),存低電平時(shí)長(zhǎng)
  ;-------------------
  BAOCUN:;存低(高)電平時(shí)長(zhǎng)
  MOV A,TH0;高位
  CPL A;取反計(jì)數(shù)值就是定時(shí)初值
  CALL EEPROMW;寫(xiě)一字節(jié)EEPROMW大約60US
  INC DPTR;下一地址
  MOV A,TL0;低位
  CPL A;取反
  CALL EEPROMW;寫(xiě)一字節(jié)EEPROMW大約60US
  ;-------------------
  MOV TH0,#0;定時(shí)器初值歸0
  MOV TL0,#6EH;補(bǔ)償120US
  SETB TR0;開(kāi)始計(jì)數(shù)
  INC DPTR;下一地址
  INC R1;電平個(gè)數(shù)加1
  CPL 2;取反判斷位,初始是0
  JNB 2,WAIT0;是0就跳到等待高電平到來(lái)
  ;***********************************
  WAIT1:JBC TF0,XOUT;等待超時(shí)
  JB IR,WAIT1;是1就等待低電平到來(lái)
  CLR TR0;停止計(jì)時(shí)
  ;---------------------------
  JMP BAOCUN;存高電平時(shí)長(zhǎng)

  XOUT:;退出
  CLR TR0;停止計(jì)時(shí)
  POP DPH;指針出棧
  POP DPL
  DEC DPL;減1就是第1字節(jié)地址;用來(lái)保存電平總數(shù)
  MOV A,R1;電平總數(shù)
  CALL EEPROMW;寫(xiě)入扇區(qū)第1個(gè)地址
  SETB LED;關(guān)燈
  RET

  ;***************************
  ;***************************
  FFSS:;紅外發(fā)射
  CLR LED;;開(kāi)燈
  MOV A,#0;
  MOVC  A,@A+DPTR
  MOV R1,A;從第1扇區(qū)第1地址取出電平總數(shù)
  CLR TR0;停止計(jì)數(shù)
  INC DPTR;下一地址開(kāi)始為發(fā)射數(shù)據(jù)時(shí)長(zhǎng)

  FFSS0:
  MOV INT_CLKO,#02H;發(fā)射38K紅外(A版T1為3.5)
  ;***************************
  ZCZ:;讀出定時(shí)時(shí)長(zhǎng)裝入定時(shí)器
  MOV A,#0;
  MOVC A,@A+DPTR
  MOV TH0,A
  INC DPTR;下一地址
  MOV A,#0
  MOVC A,@A+DPTR

  ;---------------------
  CLR C;數(shù)據(jù)修正,10US左右
  ADD A,#10
  MOV TL0,A
  MOV A,#0
  ADDC A,TH0
  MOV TH0,A

  ;***************************
  SETB TR0;開(kāi)始計(jì)時(shí)
  INC DPTR;下一地址
  JNB TF0,$;等待溢出
  MOV INT_CLKO,#00H;停止發(fā)射
  SETB P3.5;熄滅紅外管
  CLR TF0;清溢出位
  CLR TR0;停止計(jì)數(shù)
  ;-----------------------
  DJNZ R1, FFSS1;電平數(shù)-1是否完畢
  SETB P3.5;熄滅紅外管
  SETB LED;;關(guān)燈
  RET

  FFSS1:
  MOV A,#0;裝入初值
  MOVC A,@A+DPTR
  MOV TH0,A
  INC DPTR;下一地址
  MOV A,#0
  MOVC A,@A+DPTR
  ;---------------------
  CLR C;數(shù)據(jù)修正
  ADD A,#10
  MOV TL0,A
  MOV A,#0
  ADDC A,TH0
  MOV TH0,A

  ;***************************
  SETB TR0;開(kāi)始計(jì)數(shù)
  INC DPTR;下一地址
  JNB TF0,$;等待溢出
  CLR TF0
  CLR TR0;停止計(jì)數(shù)
  ;-----------------------
  DJNZ R1,FFSS0;電平數(shù)-1是否完畢
  ;***************************
  MOV INT_CLKO,#00H;停止發(fā)射
  SETB P3.5;熄滅紅外管
  SETB LED;關(guān)燈
  RET

  ;******************
  ;EPPROM讀寫(xiě)
  ;******************
  ERASE:;擦除
  MOV IAP_CONTR,#83H;允許IAP/IAP操作
  MOV IAP_CMD,#3  ;扇區(qū)擦除
  MOV IAP_ADDRH,DPH ;送高地址
  MOV IAP_ADDRL,DPL ;送低地址
  ACALL IAPXX       ;觸發(fā)
  RET
  ;************************
  EEPROMW:;寫(xiě)
  MOV IAP_CONTR,#83H;允許IAP/IAP操作
  MOV IAP_CMD,#2  ;送寫(xiě)命令
  MOV IAP_ADDRH,DPH ;送高地址
  MOV IAP_ADDRL,DPL ;送低地址
  MOV IAP_DATA,A    ;A是要寫(xiě)入的數(shù)據(jù)
  ACALL IAPXX       ;觸發(fā)
  RET
  ;************************
  EEPROMR:;讀
  MOV IAP_CONTR,#83H;允許IAP/IAP操作
  MOV IAP_CMD,#1  ;送讀命令
  MOV IAP_ADDRH,DPH ;送高地址
  MOV IAP_ADDRL,DPL ;送低地址
  ACALL IAPXX       ;觸發(fā)
  MOV A,IAP_DATA    ;讀出的數(shù)據(jù)放到A
  RET
  ;************************
  IAPXX:;觸發(fā)
  ;CLR EA ;關(guān)中斷在觸發(fā)之前
  MOV IAP_TRIG, #5AH;和11F/15F的相同,而與12C2052的不同
  MOV IAP_TRIG, #0A5H ;
  NOP
  NOP
  NOP
  ;SETB EA
  RET
  ;----------------------
  IAP_DISABLE:;禁止IAP/IAP操作
  MOV IAP_CONTR,#0
  MOV IAP_CMD,#0
  MOV IAP_TRIG,#0
  MOV IAP_ADDRH,#0FFH
  MOV IAP_ADDRL,#0FFH
  RET
  ;----------------------
  DELAY20MS: ;延時(shí)
      MOV R7,#0EH
  DL1:
      MOV R6,#0A8H
  DL0:
      MOV R5,#16H
      DJNZ R5,$
      DJNZ R6,DL0
      DJNZ R7,DL1
      RET
  END


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:87493 發(fā)表于 2015-8-3 21:52 | 只看該作者
這個(gè)電路有編譯過(guò)的HEX文件嗎,燒錄怎么做
回復(fù)

使用道具 舉報(bào)

板凳
ID:79544 發(fā)表于 2015-10-24 15:08 | 只看該作者
樓主,怎么不好用啊?
回復(fù)

使用道具 舉報(bào)

地板
ID:67366 發(fā)表于 2017-10-5 12:31 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

5#
ID:305245 發(fā)表于 2018-4-24 10:40 | 只看該作者
學(xué)習(xí)了,希望可以用于我制作的定時(shí)遙控器
回復(fù)

使用道具 舉報(bào)

6#
ID:322067 發(fā)表于 2018-5-11 13:07 | 只看該作者

學(xué)習(xí)了,希望可以用于我制作的定時(shí)遙控器
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久在线观看 | 九九av| 网站国产 | 久久影音先锋 | 天堂av中文 | 国产露脸国语对白在线 | 偷拍自拍网站 | 99riav3国产精品视频 | 福利视频日韩 | 九一在线观看 | 欧美一区二区三区电影 | 日本一区二区三区在线观看 | 日韩视频在线一区二区 | 宅女噜噜66国产精品观看免费 | 日本超碰| 人人九九精| 国产精品欧美一区二区 | 免费观看www7722午夜电影 | 国产精品区一区二区三 | 一级全黄少妇性色生活免费看 | 天堂久久一区 | 亚州中文 | 国产精品亚洲片在线播放 | 免费看爱爱视频 | 精品视频网 | 成人久久久 | 丝袜久久 | 99热这里只有精品8 激情毛片 | 亚洲精品欧美精品 | 欧美精品一区二区免费 | 久久99这里只有精品 | 亚洲精品在线看 | a视频在线| 久久久久久亚洲国产精品 | 午夜成人在线视频 | 亚洲成人av在线播放 | 综合中文字幕 | 亚洲欧美在线观看 | 日本国产高清 | 一级黄色片一级黄色片 | 九九亚洲精品 |