📄 rem.lst
字号:
C51 COMPILER V6.14 REM 03/17/2008 21:08:27 PAGE 1
C51 COMPILER V6.14, COMPILATION OF MODULE REM
OBJECT MODULE PLACED IN .\rem.OBJ
COMPILER INVOKED BY: C:\Program Files\C51\BIN\C51.EXE .\rem.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #define ulong unsigned long
4 #include <reg51.h>
5 #include <mylib.h>
6 sbit prem=P3^3; //定义遥控接收脚
7 uchar remkey; //设置四个遥控数据区域,前两个为用户自定义代码,后两个为实际接受的数据
8 bit relable; //其中前两个字节实测相等,后两个字节正好相反,以此作为遥控数据正确性效验。
9 void rem()interrupt 2
10 {uchar ram[4]={0,0,0,0};
11 1 uchar i; //干扰脉冲检测记数
12 1 uchar count; //移位控制记数
13 1 uchar ramc;
14 1 if(relable)
15 1 return; //遥控接收数据数组下标
16 1 for(i=0;i<30;i++);
17 1 {
18 2 delay(1);
19 2 if(prem) //刚开始的引导码为4.5MS的低电平,如果在此期间出现高电平则视为干扰脉冲,退出中断
20 2 return;
21 2 }
22 1 while(prem!=1); //引导码4.5MS低电平之后应为4.5MS的引导高电平,此处为等待高电平的到来。
23 1 delay(46); //延时大概4.6MS正好跨过4.5MS的引导高电平而进入32位数据的第一位。
24 1 for(ramc=0;ramc<4;ramc++)//从此处开始进入32位4个字节的遥控数据接收,此处的外循环为字节切换
25 1 for(count=0;count<8;count++)//以下将接收到的数据移位到数组的每一个单元
26 1 {
27 2 while(prem!=1); //实际上逻辑1和逻辑0都是以0.56MS的低电平开始,所不同的是高电平的延长时间,高电平延长
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -