77范文网 - 专业文章范例文档资料分享平台

52单片机做的红外学习遥控器-学了按键可以发射

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

// 中断函数注意养成指定寄存器组的习惯

//不同优先级的中断程序绝对不能使用同一组寄存器

/*****编程时防止中断把寄存器中的数据改变的解决方法是给中断指定寄存器, 同优先级的使用同一组没事。

1、写中断程序一定要用using语句指定寄存器组。第1、2、3组都可以,不能是0.

2、51单片机的中断有两个优先级。一个中断不会打断另一个相同优先级的中断。

这样相同级别中断可以使用同一个组。比如:低优先级的中断函数都 用 using 1,高优先级的中断都用 using 2 。这样不会冲突。 下面是一个正常的例子:

C程序: void int0() interrupt 0 using 1 默认5个中断时同级的,不会冲突,但是最好养成好习惯

不指定中断要使用的寄存器,每次都要入栈保护数据,中断完还要出栈,代码会增加32字节

完整代码下载:http://www.51hei.com/f/hwxx52.rar

********************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int

//少占鱼制作 河北正定欢迎您 长沙航空职业技术学院 2010 年QQ:41165643 //

//定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数

//#define ENABLE_ISP 0x80 //系统工作时钟<30MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x81 //系统工作时钟<24MHz 时,对ISP_CONTR 寄存器设置此值

#define ENABLE_ISP 0x82 //系统工作时钟<20MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x83 //系统工作时钟<12MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x84 //系统工作时钟<6MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x85 //系统工作时钟<3MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x86 //系统工作时钟<2MHz 时,对ISP_CONTR 寄存器设置此值

//#define ENABLE_ISP 0x87 //系统工作时钟<1MHz 时,对ISP_CONTR 寄存器设置此值

union union_temp16 {

uint un_temp16; uchar un_temp8[2]; }my_unTemp16;

uchar Byte_Read(uint add); //读一字节,调用前需打开IAP 功能

void Byte_Program(uint add, uchar ch); //字节编程,调用前需打开IAP 功能

void Sector_Erase(uint add); //擦除扇区 void IAP_Disable(); //关闭IAP 功能

sbit JIESHOU=P1^0; //接收指示灯 sbit FASHE=P1^1; //发射指示灯 sbit KEY=P3^5;

sbit cin=P3^2; //接收端 sbit contrl=P3^0;//发射控制端

sbit khz=P3^1;//38KHZ产生 ,由T1设置

/****************************************************************/ void delayms(uint); void ADC(); void InitADC(); void init1(); void init2(); void fashe(); void jieshou(); void delayus(uchar i); void led(uchar x);

/******************************************************/ uint voltage;

bit receive=0;//接收标志 bit flag=0;//低电平记录完成标志 bit end=0; bit finish=1;

uchar a[43]={121,1,3,4,44,55,24,156,35};//间接寻址的高128RAM,内部256RAM高128只能间接寻址 uchar j=0;

uint zu=0,addr=0; //扇区地址 uchar k;//按键代号

uchar m=0;//写EEPROM时用来移动数组的 uchar b[6];//用来存储每一组数据的总字节数

/**********************************************************************/

/****************************************************************/ void main() {

delayus(5); delayms(1000);

InitADC();//这里对其他用到P1口的地方有影响,尽量放前面 contrl=0;//关闭38K输出 KEY=1;

Sector_Erase(0x0000);//擦除扇区 1 Sector_Erase(0x200); Sector_Erase(0x400); Sector_Erase(0x600); Sector_Erase(0x800); Sector_Erase(0xa00);

Sector_Erase(0xc00);//擦除扇区 7 addr=0xc00; FASHE=0; JIESHOU=0; FASHE=1;

delayms(4900);

for(j=6;j>0;j--)//j是数据总长度,如此判断,不会存储多余的空位 { Byte_Program(addr,a

??);//从本组数据对应扇区首地址开始写EEPROM m++; //数组下移 addr++; //地址下移 delayms(1);} //for end m=Byte_Read(0xc00);

if(m==121) { JIESHOU=1; delayms(6000); }

m=0;//下面还要用,所以清0 addr=0; zu=0; FASHE=0; KEY=1; JIESHOU=0;

delayms(1000);

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库52单片机做的红外学习遥控器-学了按键可以发射在线全文阅读。

52单片机做的红外学习遥控器-学了按键可以发射.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/476781.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: