漫反射红外线感应程序--汇编_第1页
漫反射红外线感应程序--汇编_第2页
漫反射红外线感应程序--汇编_第3页
漫反射红外线感应程序--汇编_第4页
漫反射红外线感应程序--汇编_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 ;各引脚复位后初始化状态;-;P3.0 电源指示灯,输出高;P3.1 启动指示灯,输出低;P3.3 红外检测输入;P3.4 红外线输出,输出低;P3.7 红外线强度调制,输出高;P1.0 温度检测,模拟输入;P1.1 正向导通,输出高;P1.2 继电器,输出高;P1.5 同步脉冲,输入;P1.6 反向导通,输出高;P1.7 功能开关,输入;内存单元说明;-SHDA EQU 5FH ;调节结束标志QTYSH EQU 60H ;启停延时单元KQSHJ1 EQU 61H ;开启时间高位KQSHJ0 EQU 62H ;开启时间低位MAICHJS EQU 63H ;开启脉冲计数单元TRIAC EQU

2、64H ;可控硅开启标志XIANWEI EQU 65H ;可控硅相位延时时间单元HWXIANH EQU 66H ;红外线信号计数高位HWXIANL EQU 67H ;红外线信号计数低位LVBO EQU 68H ;红外线信号滤波单元KAIQI EQU 69H ;机器开启标志KAIGUAN EQU 6AH ;红外线开关QIANGDU EQU 6BH ;红外线强度暂存单元JIARE EQU 6CH ;加热控制单元;-;口定义P1M0 EQU 91H ;口1设定字P1M1 EQU 92HP3M0 EQU 0B1H ;口3设定字P3M1 EQU 0B2HWDT_CONTR EQU 0E1H ;看门狗控制

3、字ADC_CONTR EQU 0BCH ;ADC转换控制字ADC_DATA EQU 0BDH ;ADC转换结果字AUXR EQU 8EH ;定时器速率设置字P1ASF EQU 9DH ;A/D口选择字WAKE_CLK0 EQU 8FH ;允许时钟输出控制字;EEPROM单元说明;-HONGWAI EQU 0001H ;红外线强度单元地址为 0001HHWKZ EQU 0201H ;恒温控制单元地址为 0201H;程序开始ORG 0000HLJMP START ;跳转至 0030H;- 中断区域 -;ORG 0003H ;外部中断 0;SJMP 0003H ;本中断用于断电数据保护;ORG 00

4、0BH ;定时器 0 溢出中断AJMP MCHSC ;转脉冲输出RETI;ORG 0013H ;外部中断 1AJMP JIANCE ;本中断检测红外线信号RETI;ORG 001BH ;定时器 1 溢出中断AJMP SHUJU ;本中断用于红外数据调制RETI ;本中断用于涉及时间的处理;ORG 0023H ;串行口中断RETI;ORG 002BH ;定时器 2 溢出中断RETI;-;/新一代 1T 8051系列 单片机PCA/PWM 特殊功能寄存器;/ Reset ValueCCON EQU 0D8H ;/PCA 控制寄存器。 00xx,xx00CMOD EQU 0D9H ;/PCA 工作模

5、式寄存器。 0xxx,0000CL EQU 0E9H ; /PCA 计数器低位 0000,0000CH EQU 0F9H ; /PCA 计数器高位 0000,0000CCAPM0 EQU 0DAH ; /PCA 模块0 PWM 寄存器 - x000,0000CCAPM1 EQU 0DBH ; /PCA 模块1 PWM 寄存器 - x000,0000CCAPM2 EQU 0DCH ; /PCA 模块1 PWM 寄存器 - x000,0000CCAPM3 EQU 0DDH ; /PCA 模块1 PWM 寄存器 - x000,0000;/-CCAP0L EQU 0EAH ; /PCA 模块 0 的捕

6、捉/比较寄存器低 8 位。 0000,0000CCAP0H EQU 0FAH ; /PCA 模块 0 的捕捉/比较寄存器高 8 位 0000,0000CCAP1L EQU 0EBH ; /PCA 模块 1 的捕捉/比较寄存器低 8 位。 0000,0000CCAP1H EQU 0FBH ; /PCA 模块 1 的捕捉/比较寄存器高 8 位。 0000,0000CCAP2L EQU 0ECH ; /PCA 模块 2 的捕捉/比较寄存器低 8 位。 0000,0000CCAP2H EQU 0FCH ; /PCA 模块 2 的捕捉/比较寄存器高 8 位。 0000,0000CCAP3L EQU 0E

7、DH ; /PCA 模块 3 的捕捉/比较寄存器低 8 位。 0000,0000CCAP3H EQU 0FDH ; /PCA 模块 3 的捕捉/比较寄存器高 8 位。 0000,0000;/-PCA_PWM0 EQU 0F2H ; /PCA 模块0 PWM 寄存器。 xxxx,xx00PCA_PWM1 EQU 0F3H ; /PCA 模块1 PWM 寄存器。 xxxx,xx00PCA_PWM2 EQU 0F4H ; /PCA 模块2 PWM 寄存器。 xxxx,xx00PCA_PWM3 EQU 0F5H ; /PCA 模块3 PWM 寄存器。 xxxx,xx00;-ORG 0030H;定时器

8、0 脉冲输出中断处理MCHSC: PUSH ACC PUSH PSW MOV A,TRIAC ;读可控硅开启标志 CLR C SUBB A,#55H ;开启吗 JZ MCHSC2 ;开启则转开启处理MCHSC1: SETB 91H SETB 96H ;关闭可控硅控制脉冲 POP PSW ;不开启则返回 POP ACC RETI;开启处理MCHSC2: MOV A,MAICHJS ;读脉冲计数单元 DEC A MOV MAICHJS,A JNZ MCHSC1 ;计数值不为零返回 MOV MAICHJS,#6 ;计数单元重置为六 LCALL MAICK ;输出控制脉冲 AJMP MCHSC1 ;返

9、回;定时器 1 中断,红外线数据调制;-SHUJU: PUSH ACC PUSH PSW CLR 0B4H ;关闭红外线脉冲 AJMP SHUJU6SHUJU5: MOV WAKE_CLK0,#1 ;开启脉冲输出SHUJU6: MOV A,LVBO ADD A,#1 MOV LVBO,A ;时间常数加一 JNC SHUJU3 ;无进位跳过 MOV KAIQI,#0 ;设为关闭 AJMP SHUJU2SHUJU1: MOV KAIQI,#0FFH ;设为开启SHUJU2: MOV HWXIANL,#0 MOV HWXIANH,#0 ;清除红外线计数SHUJU3: POP PSW POP ACC

10、RETISHUJU4: MOV A,HWXIANL CLR C AJMP SHUJU8SHUJU7: MOV KAIQI,#0FFH ;设为开启SHUJU8: MOV HWXIANL,#0 MOV HWXIANH,#0 ;清除红外线计数 POP PSW POP ACC RETI;外部中断 1 ,检测红外线信号JIANCE: PUSH ACC MOV A,HWXIANL INC A MOV HWXIANL,A ;低位加一 JNZ JIANCE1 ;不为零跳过 INC HWXIANH ;高位加一JIANCE1: POP ACC RETISTART: ;程序开始 START MOV P1M1,#46

11、H MOV P1M0,#0B9H ;设P1的输入输出端子 MOV P1,#0FFH ;端子初值 MOV P1ASF,#1 ;设模拟端子 MOV P3M0,#8 MOV P3M1,#0F7H MOV P3,#0DH MOV SP,#34H ;堆栈 SP=34H MOV IE,#00H ;禁止中断IE=00 MOV TCON,#00H ;关 T0,T1 及INT0,INT1中断;红外线强度调节端口设置 MOV CMOD,#8EH ;时钟频率=fosc/8 MOV CCON,#40H ;开启PCA计数器 MOV CL,#00H MOV CH,#00H ;清零PCA计数器 MOV CCAPM0,#42

12、H ;设模块0为PWM输出模式 MOV PCA_PWM0,#00H MOV CCAP0H,#60H ;设为一半强度;/-;38KHZ脉冲发生器M38KHZ:;-;设定时器1为定时方式,中断开启 MOV AUXR,#80H ;设定时器 0 时钟为1T,定时器 1 时钟为12T MOV TMOD,#22H ;设定时器 0 和 1 为 8 位自动重装 MOV TL1,#1 MOV TH1,#1 ;置定时器0时间常数 MOV TL0,#0B1H MOV TH0,#0B1H ;置定时器1时间常数 MOV IE,#8EH ;开启中断 SETB IT1 ;置 INT1 为下降沿触发 MOV HWXIANH,

13、#0 MOV HWXIANL,#0 ;清除红外线计数单元 MOV LVBO,#0 ;清除红外线信号滤波单元 MOV KAIQI,#0 ;清除开启标志 SETB TR1 ;开定时器1 SETB TR0 ;开定时器0 MOV TRIAC,#0 ;关闭可控硅;开机按键设别 AJMP STR5 ;设为最大强度 JNB 97H,STR1 ;选择2800转不调节,设为最大强度 AJMP STR4 ;无按键转读取设定值;开机按按键则等待按键释放后自动调节STR1: MOV R0,#5STR2: MOV A,#5 LCALL DELAY10ms ;延时0.05秒 JNB 97H,STR1 ;键依然按着恢复释放

14、延时 DJNZ R0,STR2 ;释放延时到后续自动设定STR3: MOV A,#50 LCALL DELAY10ms ;延时0.5秒 MOV SHDA,#0 ;设调节标志 LCALL M38KZ ;调节红外线强度 MOV P3,#0EH MOV QIANGDU,A ADD A,#0FEH JC M38KHZ1 ;强度没过大则判为正常STR5: MOV A,QIANGDU MOV ISP_DATA,A LCALL WRITE ;写入EEPROM LJMP M38KHZ2 ;转工作循环;开机无按键读取设定值STR4: MOV ISP_ADDRH,#0 MOV ISP_ADDRL,#0 LCALL

15、 READ ;读取设定标志 ADD A,#1 JC STR3 ;无设定标志则自动调节 MOV ISP_ADDRH,#0 MOV ISP_ADDRL,#1 LCALL READ ;有设定标志则读取设定值 MOV A,ISP_DATA MOV QIANGDU,A MOV CCAP0H,A ;设置红外线强度M38KHZ2: MOV JIARE,#0;进入工作循环WORK: MOV P1M1,#46H MOV P1M0,#0B9H ;设P1的输入输出端子 MOV P1,#0FFH ;端子初值 MOV P1ASF,#1 ;设模拟端子 MOV TMOD,#22H ;设定时器 0 和 1 为8位自动重装 M

16、OV TL1,#1 ;置定时器0时间常数 MOV TL0,#0B1H ;置定时器1时间常数 MOV IE,#8EH ;开启定时器和外部中断 SETB IT1 ;置 INT1 为下降沿触发 SETB TR0 ;开定时器0 SETB TR1 MOV SHDA,#0FFH ;清除调节标志 MOV TRIAC,#0 ;关闭可控硅;感应距离设定 WOK1: MOV QTYSH,#30 ;设启动延时0.3秒 MOV WDT_CONTR,#30H ;重启看门狗 MOV A,#100 ACALL DELAY100us ;MOV A,KAIQI ;ANL A,#0FFH ;JZ WORK ;无感应信号继续等待W

17、ORK1: ;MOV A,KAIQI ;ANL A,#0FFH ;JZ WORK ;无感应信号重新检测 AJMP WORK1 ;继续延时循环WORK2: CLR 0B1H ;打开工作指示灯 ACALL WENDUJC ;检测环境温度 MOV A,ADC_DATA CLR C SUBB A,#50 JNC WORK22 ;小于24°开启加热 MOV A,ADC_DATA CLR C SUBB A,#45 ;大于26°不开加热 JC WORK21 MOV A,JIARE ANL A,#0FFH JNZ WORK22 ;处于24°至26°之间则维持原状态WOR

18、K21: MOV JIARE,#0 SETB 92H ;关闭加热 AJMP WORK23WORK22: MOV JIARE,#0FFH CLR 92H ;打开加热WORK23: LCALL READ ;读出EEPROM MOV CCAP0H,A CLR C SUBB A,#0C0H JC WORK24 ;原保存数据正常则跳过 MOV CCAP0H,#128 ;设为中间值WORK24: LCALL SOFTSTART ;启动 MOV A,TRIAC ANL A,#0FFH JZ WORK41 ;启动过程中结束则直接跳转 MOV KQSHJ1,#45 MOV KQSHJ0,#20 ;设开启时间限制

19、40秒WORK3: MOV QTYSH,#50 ;关闭延时0.5秒WORK4: MOV A,QTYSH DEC A MOV QTYSH,A JNZ WORK5 ;延时没到转继续;关闭控制WORK41: MOV TRIAC,#0 ;关闭可控硅 SETB 0B1H ;关工作指示灯 SETB 92H ;关继电器 AJMP WORK ;回到初始循环;开启循环WORK5: MOV A,#30 ACALL DELAY100us ;延时1ms ;MOV A,KAIQI ;ANL A,#0FFH ;JZ WORK4 ;无感应信号转关闭延时 MOV A,KQSHJ0 ;判开启时间 DEC A MOV KQSHJ

20、0,A JNZ WORK3 ;开启时间没到转继续开启处理 MOV KQSHJ0,#20 MOV A,KQSHJ1 DEC A MOV KQSHJ1,A JNZ WORK3 ;开启时间没到转继续开启处理;开启时间超时处理WORK6: MOV TRIAC,#0 ;关闭可控硅 SETB 92H ;关闭加热 SETB 0B1H ;关工作指示灯WORK7: MOV QTYSH,#200 ;检测关闭恢复时间5秒WORK8: MOV A,QTYSH DEC A MOV QTYSH,A JZ WORK9 ;恢复返回 MOV A,#125 ACALL DELAY100us ;延时20ms ;MOV A,KAIQ

21、I ;ANL A,#0FFH ;JZ WORK8 ;无感应转恢复延时 AJMP WORK8 ;否则继续检测WORK9: AJMP WORK ;延时子程序;-DELAY10ms: PUSH 01 MOV R1,ADELAY1: MOV A,#100 ACALL DELAY100us MOV WDT_CONTR,#30H ;重启看门狗 DJNZ R1,DELAY1 POP 01 RET;延时100us子程序;-DELAY100us: PUSH 02 PUSH 03 MOV WDT_CONTR,#30H ;重启看门狗 MOV R3,ADELAY51: MOV R2,#120DELAY52: DJNZ

22、 R2,DELAY52 DJNZ R3,DELAY51 POP 03 POP 02 RET;延时3us子程序DELAY3us: PUSH 02 MOV R2,#2DELAY31: DJNZ R2,DELAY31 POP 02 RET;正反向脉冲输出子程序MAICK: CLR 91H ;开启正向脉冲 LCALL DELAY3us ;延时3us SETB 91H PUSH 01 POP 01 CLR 96H ;关闭正向脉冲,开启反向脉冲 LCALL DELAY3us ;延时3us SETB 96H ;关闭反向脉冲 RET;软启动程序SOFTSTART: MOV XIANWEI,#50 ;设初始延时

23、8msSOFTRUN: ACALL BIANYAN ;相位调节 MOV A,KAIQI ANL A,#0FFH JZ SOFTRUN2 ;无感应转停止延时处理 MOV QTYSH,#10 ;设开启段停止延时0.2秒SOFTRUN1: MOV A,XIANWEI DEC A ;延时时间减一 JZ SOFTRUN3 ;时间到转结束 DEC A MOV XIANWEI,A ;延时时间减一 JNZ SOFTRUN ;软启动没结束继续SOFTRUN3: RET ;结束则返回SOFTRUN2: MOV A,QTYSH DEC A MOV QTYSH,A ;延时时间减一 JNZ SOFTRUN1 ;延时没到

24、继续 MOV TRIAC,#0 RET ;延时到关闭可控硅返回;跳变沿检测与相位调节程序BIANYAN: JNB 95H,BIANYAN ;低电平继续检测 MOV TRIAC,#0 ;变高了则关闭可控硅 MOV A,XIANWEI ;取相位延时时间 ACALL DELAY100us ;延时 MOV TRIAC,#55H ;延时时间到则开启可控硅BIANYAN1: JB 95H,BIANYAN1 ;高电平则继续检测 MOV TRIAC,#0 ;变低了则关闭可控硅 MOV A,XIANWEI ;取相位延时时间 ACALL DELAY100us ;延时 MOV TRIAC,#55H ;延时时间到则开

25、启可控硅 RET;自动调节红外线强度子程序M38KZ: MOV A,KAIQI ANL A,#0FFH JZ M38K2 ;无感应转相应处理M38K1: MOV A,CCAP0H ADD A,#3 MOV CCAP0H,A ;红外线强度减小 JC M38K4 ;有进位转感应故障处理 MOV A,#5 LCALL DELAY10ms ;延时0.05秒 MOV A,KAIQI ANL A,#0FFH JNZ M38K1 ;还有感应继续减弱 SJMP M38K3 ;无感应结束M38K2: MOV A,CCAP0H CLR C SUBB A,#3 MOV CCAP0H,A ;红外线强度增加 JC M3

26、8K5 ;有进位转感应故障处理 MOV A,#5 LCALL DELAY10ms ;延时0.05秒 MOV A,KAIQI ANL A,#0FFH JZ M38K2 ;依然无感应继续增加;检测到感应后反方向减小强度M38K3: MOV A,CCAP0H ADD A,#3 MOV CCAP0H,A ;红外线强度减小 MOV A,#10 LCALL DELAY10ms ;延时0.1秒 MOV A,KAIQI ANL A,#0FFH JNZ M38K3 ;有感应则继续减小;无感应停止减小,开始计算设定强度 MOV A,CCAP0H MOV B,A MOV A,#0FFH CLR C SUBB A,B

27、 ;计算脉宽 SUBB A,#30 ;减阀值 JNC M38H1 ;小于30置为0 MOV A,#0M38H1: JB 97H,M38H2 ;功能端子高电平转 MOV B,#255 ;功能端低电平则为2630或2800 SJMP M38H3M38H2: MOV B,#150M38H3: MUL AB ;值乘150 MOV A,#30 ADD A,B ;加基准阀值 MOV B,A MOV A,#0FFH CLR C SUBB A,B ;求实际设定PWM宽度 MOV CCAP0H,A RET;感应强度太大设为最大强度M38K4: SETB 0B0H SETB 0B1H MOV A,#20 LCAL

28、L DELAY10ms ;延时0.2秒 CLR 0B0H CLR 0B1H MOV A,#20 LCALL DELAY10ms ;延时0.2秒 SJMP M38K4M38K5: MOV A,#7 MOV CCAP0H,A ;设为最大感应强度 SJMP M38K3;温度检测子程序;-;温度通道检测,转换结果在ADC_DATAWENDUJC: MOV ADC_CONTR,#80H ;打开ADC电源 MOV A,#10 ;延时1ms ACALL DELAY100uS MOV ADC_CONTR,#0E0H ;打开P1.0温度检测通道 MOV A,#2 ;延时0.2ms ACALL DELAY100u

29、s MOV ADC_DATA,#0 MOV ADC_CONTR,#0E8H ;开启AD转换 NOP NOP NOP NOPWENDUBC1: MOV A,ADC_CONTR ;判断AD转换是否结束 ANL A,#10H JZ WENDUBC1 ;AD转换未结束,继续等待 MOV A,ADC_CONTR ANL A,#0E7H MOV ADC_CONTR,A ;清标志,停止ADC RET;EEPROM读写子程序;- ISP_DATA EQU 0C2H ISP_ADDRH EQU 0C3H ISP_ADDRL EQU 0C4H ISP_CMD EQU 0C5H ISP_TRIG EQU 0C6H

30、ISP_CONTR EQU 0C7H;EEPROM读;-;调用前先将地址存入ISP_ADDRH和ISP_ADDRL;读取结果在ISP_DATAREAD: MOV ISP_CONTR,#84H ;设等待时间 MOV ISP_CMD,#01H ;送读EEPROM命令 MOV ISP_TRIG,#5AH MOV ISP_TRIG,#0A5H ;启动读EEPROM NOP MOV ISP_CMD,#00H MOV ISP_CONTR,#00H MOV ISP_TRIG,#00H ;关闭EEPROM读写 MOV ISP_ADDRH,#00H MOV ISP_ADDRL,#00H ;地址指向非EEPROM

31、区 MOV A,ISP_DATA RET;EEPROM写;-;调用前先将地址存入ISP_ADDRH和ISP_ADDRL;要写入的数据源嫒隝ISP_DATAWRITE: MOV ISP_CONTR,#84H ;设等待时间 MOV ISP_CMD,#02H ;送写EEPROM命令 MOV ISP_TRIG,#5AH MOV ISP_TRIG,#0A5H ;启动擦除EEPROM NOP MOV ISP_TRIG,#00H ;关闭EEPROM操作 MOV ISP_ADDRH,#00H MOV ISP_ADDRL,#00H ;地址指向非EEPROM区 RET;调用前先将地址存入ISP_ADDRH和ISP

32、_ADDRL;擦除一页EEPROM的数据CHACHU: MOV ISP_CONTR,#84H ;设等待时间 MOV ISP_CMD,#03H ;送擦除EEPROM命令 MOV ISP_TRIG,#5AH MOV ISP_TRIG,#0A5H ;启动擦除EEPROM NOP MOV ISP_TRIG,#00H ;关闭EEPROM操作 MOV ISP_ADDRH,#00H MOV ISP_ADDRL,#00H ;地址指向非EEPROM区 RET;感应距离调节子程序TIAOJ: MOV QTYSH,#30 AJMP TIAOJ1TIAOJ0: MOV QTYSH,#15 ;设减短时间为0.75秒TIAOJ1: MOV A,#5 LCALL DELAY10ms ;延时0.05秒 JB 97H,TIAO1 ;按键释放转释放判别 CLR 0B1H ;打开工作指示灯 MOV A,QTYSH DEC A MOV QTYSH,A ;按键时间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论