当前位置:文档之家› nec,ir,协议

nec,ir,协议

1 20 竭诚为您提供优质文档/双击可除

nec,ir,协议

篇一:nec码红外遥控完整编码

红外遥控编码程序如下:

nec.sectiondata

a_Rem_codedb;keydatacode

a_customeR_1db;遥控器头码(客户码)低八位a_customeR_2db;遥控器头码(客户码)高八位#definecus_6221_100110100b;1234h

#definecus_6221_200010010b

;@------------------------------------------------

nec_code.sectioncode

;@*************subRoutine[xx]:sendRemotecode************;;遥控码发送:

send_Remote_code:

clrwdt;清除进位标志,检测遥控发送的有效的按键

2 20 szfg_sendactive;sz表示以0结尾的字符串

jmpReady_send;跳转到Ready_send模块

ret

Ready_send:

nec_code:

mova,a_key_num;将数值发送到寄存器a中,直接寻址

movm_tblp,a

tabRdla_Rem_code;查表专用指令

moVa,cus_6221_1;读取遥控头码(客户码)低八位数值

moVa_customeR_1,a

moVa,cus_6221_2

moVa_customeR_2,a

以上为Ready_send运行模块,同时是为后面nec码发送的准备;首先将一个按键的数值已以直接寻址方式发送到寄存器a中,将寄存器a的是发送到m_tblp中,然后查表a_Rem_code,将cus_6221_1的值发送到寄存器中,在赋值给遥控器头码(客户码)低八位a_customeR_1,同理,将cus_6221_2赋值给遥控器头码(客户码)低八位a_customeR_2,随后即开始发送nec遥控码。nec引导码发送并开始编译:

;;---startingsendnecRemotecode---

send_nec:;checknokeycodeffh

3 20 sizaa_Rem_code;取出变量的大小

jmpleadnec_code;跳转指令

Ret;返回地址出栈,从而实现转移到返回地址处

leadnec_code:;1instructioncycle=8.79us

clrpn_iR;highlevel9ms(455khz:1023cycle)mova,002d;[(3*168)+5]*2=1018

mova_sR13,a

leadind_code_00:

mova,168d

movm_acc,a

leadind_code_01:

sdzm_acc;结果为零,则跳过下一条指令

jmpleadind_code_01

sdza_sR13

jmpleadind_code_00

nop2

nop2

nop;空操作指令,占用一个机器周期,用于延时或程序指令的对齐setpn_iR;置位标志,即将某一位置1

clrwdt

mova,001d;lowlevel2.5ms(284cycle)

4 20 mova_sR13,a;[(4*69)+5]*1=281

lead_code_04:

mova,70d

movm_acc,a

lead_code_05:

nop

sdzm_acc

jmplead_code_05

sdza_sR13

jmplead_code_04

clrwdt

szfg_Repeat;checkRepeatkey

jmpRepeat_code

mova,001d;lowlevel2.0ms(227cycle)

mova_sR13,a;[(4*55)+5]*1=225

lead_code_06:

mova,53d

movm_acc,a

lead_code_07:

nop

sdzm_acc

jmplead_code_07

5 20 sdza_sR13

jmplead_code_06

clrwdt

nop2

;------------------------

;;客户码编译:

cusnec_code:

mova,002d

mova_sR13,a

moVa,oFFseta_customeR_1

moVm_mp0,a

custom_pRo:

mova,008d

mova_sR11,a;8databit

nop

custom_bit_bl

clrpn_iR

mova,20d

custom_bit_bl_1:

sdzm_acc

jmpcustom_bit_bl_1

clrwdt

6 20 nop

custom_bit_bh:

setpn_iR;0.56ms->63cycle;[(3*20)+2]=62;00.56ms->63cycle;11.68ms->191cycle

nop

rrm_indiRect1;

mova,18d

szm_indiRect1.7;

mova,61d

custom_bit_bh_0:

sdzm_acc

jmpcustom_bit_bh_0

clrwdt

sdza_sR11

jmpcustom_bit_bl

incm_mp0

sdza_sR13

jmpcustom_pRo

;;---------------------------

;;数据码编译:

data6nec_bit:

7 20 mova,002d

mova_sR13,a

data_pRo:

mova,008d

mova_sR11,a

nop

data_bit_bl:

clrpn_iR

mova,20d

data_bit_bl_1:

sdzm_acc

jmpdata_bit_bl_1

clrwdt

nop

data_bit_bh:

setpn_iR

nop

rra_Rem_code;

mova,18d

sza_Rem_code.7

mova,61d

8 20 data_bit_bh_0:;8databit;0.53ms->60cycle;[(3*19)+2]=59;00.53ms->60cycle;11.58ms->179cycle

sdzm_acc

jmpdata_bit_bh_0

clr

wdt

sdza_sR11

jmpdata_bit_bl

cpla_Rem_code

sdza_sR13

jmpdata_pRo

;0.53ms->60cycle

clrpn_iR;[(3*19)+2]=59

mova,20d

data_bit_bl_2:

sdzm_acc

jmpdata_bit_bl_2

clrwdt

setpn_iR

;---Framedelaytimeprocess---

mova,004d;Repetitiontime=108ms(12286cycle)mova_sR13

9 20 ,a;scankey=2471cycle

;sendcode=7349cycle

Fdtp_loop_01:;12286-2471-7349=2466

mova,152d;[(4*152)+5]*4=2452

movm_acc,a

Fdtp_loop_02:

nop

sdzm_acc

jmpFdtp_loop_02

clrwdt

sdza_sR13

jmpFdtp_loop_01

mova,3d

movm_acc,a

Fdtp_loop_03:

sdzm_acc

jmpFdtp_loop_03

nop2

ret

;--------------------------------

;;重复码编译:

Repeat_code:

10 20 ;0.56ms->63cycle

clrpn_iR;[(3*20)+2]=62

mova,19d

Rep_bit_bl_3:

sdzm_acc

jmpRep_bit_bl_3

clrwdt

setpn_iR

;---RepeatFramedelaytimeprocess---

mova,016d

mova_sR13,a

Rep_delay_02:

mova,130d

movm_acc,a

Rep_delay_03:

nop

sdzm_acc

jmpRep_delay_03

clrwdt

sdza_sR13

jmpRep_delay_02

mova,07d

相关主题