nec码红外遥控完整编码.docx
《nec码红外遥控完整编码.docx》由会员分享,可在线阅读,更多相关《nec码红外遥控完整编码.docx(9页珍藏版)》请在冰豆网上搜索。
nec码红外遥控完整编码
nec码红外遥控完整编码
红外遥控编码程序如下:
NEC.SECTION'DATA'
a_REM_CODEDB?
;KEYDATACODE
a_CUSTOMER_1DB?
;遥控器头码(客户码)低八位
a_CUSTOMER_2DB?
;遥控器头码(客户码)高八位
#defineCUS_6221_100110100b;1234H
#defineCUS_6221_200010010b;@------------------------------------------------
NEC_CODE.SECTION'CODE'
;@*************SUBROUTINE[xx]:
SendRemoteCode************
;;遥控码发送:
SEND_REMOTE_CODE:
clrWDT;清除进位标志,检测遥控发送的有效的按
键
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
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;置位标志,即将某一位置1clrwdt
movA,001d;LOWLevel2.5ms(284Cycle)
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;CHECKREPEATKEYJMPREPEAT_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
SDZa_SR13
JMPLEAD_CODE_06
clrwdt
nop2
;------------------------
;;客户码编译:
CUSNEC_CODE:
movA,002d
mova_SR13,A
MOVA,OFFSETa_CUSTOMER_1MOVM_MP0,A
CUSTOM_PRO:
movA,008d
mova_SR11,A;8databitnop
CUSTOM_BIT_BL;0.56ms->63Cycle
clrpn_IR;[(3*20)+2]=62
movA,20d
CUSTOM_BIT_BL_1:
SDZM_ACC
JMPCUSTOM_BIT_BL_1
clrwdt
Nop
CUSTOM_BIT_BH:
;'0'0.56ms->63Cycle
setpn_IR;'1'1.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:
movA,002d
mova_SR13,A
DATA_PRO:
movA,008d
mova_SR11,A;8databit
nop
DATA_BIT_BL:
;0.53ms->60Cycle
clrpn_IR;[(3*19)+2]=59
movA,20d
DATA_BIT_BL_1:
SDZM_ACC
JMPDATA_BIT_BL_1
clrwdt
nop
DATA_BIT_BH:
;'0'0.53ms->60Cycle
setpn_IR;'1'1.58ms->179Cycle
nop
rra_REM_CODE;
movA,18d
SZa_REM_CODE.7
movA,61d
DATA_BIT_BH_0:
SDZM_ACC
JMPDATA_BIT_BH_0
clrwdt
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,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:
;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;Repetitiontime=108ms(12286Cycle)
mova_SR13,A;ScanKey=2471Cycle
ndRepeatCode=1390Cycle;Se
REP_DELAY_02:
;12286-2471-1390=8425
movA,130d;[(4*130)+5]*16=8400
movM_ACC,A
REP_DELAY_03:
nop
SDZM_ACC
JMPREP_DELAY_03
clrwdt
SDZa_SR13
JMPREP_DELAY_02
movA,07d
movM_ACC,A
REP_DELAY_04:
SDZM_ACC
JMPREP_DELAY_04
NOP2
ret
%%%%%%%%%%%%%%%%%%%%RemoteTableArray%%%%%%%%%%%%%%%%%%%%%%%%%
org300h
DW00ffh;;Key00:
---:
00DW0000h;;Key1:
---:
01DW0001h;;Key2:
:
02DW0002h;;Key3:
:
03DW0003h;;Key4:
:
04DW0004h;;Key5:
:
05DW0005h;;Key6:
:
06DW0006h;;Key7:
:
07DW0007h;;Key8:
:
08DW0008h;;Key9:
:
09DW0009h;;Key10:
:
10DW000ah;;Key11:
:
11DW000bh;;Key12:
:
12DW000ch;;Key13:
:
13DW000dh;;Key14:
:
14DW000eh;;Key15:
:
15DW000fh;;Key16:
:
16DW0010h;;Key17:
:
17DW0011h;;Key18:
:
18DW0012h;;Key19:
:
19DW0013h;;Key20:
:
20DW0014h;;Key21:
:
21DW0015h;;Key22:
:
22DW0016h;;Key23:
:
23DW0017h;;Key24:
:
24DW0018h;;Key25:
:
25DW0019h;;Key26:
:
26
DW001ah;;Key27:
:
27DW001bh;;Key28:
:
28
001ch;;Key29:
:
29DW
DW001dh;;Key30:
:
30DW001eh;;Key31:
:
31DW001fh;;Key32:
:
32DW0020h;;Key33:
:
33DW0021h;;Key34:
:
34DW0022h;;Key35:
:
35DW0023h;;Key36:
:
36DW0024h;;Key37:
:
37DW0025h;;Key38:
:
38DW0026h;;Key39:
:
39DW0027h;;Key40:
:
40DW0028h;;Key41:
:
41DW0029h;;Key42:
:
42DW002ah;;Key43:
:
43DW002bh;;Key44:
:
44DW002ch;;Key45:
:
45DW002dh;;Key46:
:
46DW002eh;;Key47:
:
47DW002fh;;Key48:
:
48
0030h;;Key49:
:
49DW
DW0031h;;Key50:
:
50DW0032h;;Key51:
:
51DW0033h;;Key52:
:
52DW0034h;;Key53:
:
53DW0035h;;Key54:
:
54DW0036h;;Key55:
:
55DW0037h;;Key56:
:
56DW0038h;;Key57:
:
57DW0039h;;Key58:
:
58DW003ah;;Key59:
:
59DW003bh;;Key60:
:
60DW003ch;;Key61:
:
61DW003dh;;Key62:
:
62DW003eh;;Key63:
:
63DW003fh;;Key64:
:
64END