基于单片机的远程控制系统 程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、单片机初始化
单片机的存储系统的分配利用在其工作过程中起非常大的作用,所以就必须对其进行必要的初始化。
程序代码:
(1)片内RAM初始化子程序
IBCLR: MOV A,R0
MOV R1,A
CLR A
IBC1 : MOV @R1,A
INC R1
DJNZ R7,IBC1
RET
(2)片外RAM初始化子程序
EBCLR1: MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
CLR C
EBC11: MOVX @DPTR,A
INC DPTR
DJNZ R7,EBC11
RET
(3)片外RAM初始化子程序(双字节单元)
EBCLR2: MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
MOV A,R7
JZ EBC21
INC R6
EBC21: CLR A
MOVX @DPTR,A
INC DPTR
DJNZ R7,EBC21
DJNZ R6,EBC21
RET
2、振铃计数模块
本单元是通过计数器T0的外部中断方式来计数的。
程序代码:
ORG 0090H
TT0: SETB 7DH
RETI
3、语音提示模块
本功能模块主要是产生信号提示音,方便不同的使用者。根据普通人耳的反应频率为20Hz 至20KHz的范围,而CCITT规定的电话话音信号的频率范围是300Hz至3400Hz,所以在本功能单元的发声频率定为500Hz和1000Hz两种。
主要分为五种提示音:
1、一声低音,表示装置已经摘机,请输入密码,其参数:频率f=500Hz,延时t=0.5秒/声;
2、两声低音,表示密码已经通过,请选择电器,其参数:频率f=500Hz,延时t=0.5秒/声;
3、三声低音,表示电器已经选定,请控制(开/关),其参数:频率f=500Hz,延时t=0.5秒/声;
4、三声高音,表示密码输入错误,其参数:频率f=1000Hz,延时t=0.3秒/声;
5、一声高音,表示控制已经完成,其参数:频率f=1000Hz,延时t=0.3秒/声;
提示音发生是使用有限循环,反复使单片机的RXD口的电平反转,从而形成方波信号。
子程序代码:
ORG 1100H
RING10:MOV R6,#20 ;请输入密码,
RING11:MOV R7,#20 ;500Hz,
RING12:LCALL DL10 ;发出提示音,1
CPL P3.0 ;延时0.5s
DJNZ R7,RING12
DJNZ R6,RING11
CLR P3.0
RET
ORG 1150H
RING20:MOV R3,#03
RING21:MOV R6,#20 ;选择电器,
RING22:MOV R7,#20 ;500Hz,
RING23:LCALL DL20 ;发出提示音2,
CPL P3.0 ;延时0.3s
DJNZ R7,RING23
DJNZ R6,RING22
CLR P3.0
MOV R7,#200
RING24:LCALL DL10
DJNZ R7,RING24
DJNZ R3,RING21
CLR P3.0
RET
ORG 1200H
RING30:MOV R3,#02
RING31:MOV R6,#20 ;电器控制,RING32:MOV R7,#20 ;500Hz,
RING33:LCALL DL10 ;发出提示音3,CPL P3.0 ;延时0.3s
DJNZ R7,RING33
DJNZ R6,RING32
CLR P3.0
MOV R7,#200
RING34:LCALL DL10
DJNZ R7,RING34
DJNZ R3,RING31
CLR P3.0
RET
ORG 1250H
RING40:MOV R3,#03
RING41:MOV R6,#20 ;输入的密码错误,RING42:MOV R7,#20 ;1000Hz,
RING43:LCALL DL10 ;发出提示音4,CPL P3.0 ;延时0.3s
DJNZ R7,RING43
DJNZ R6,RING42
CLR P3.0
MOV R7,#100
RING44:LCALL DL10
DJNZ R7,RING44
DJNZ R3,RING41
CLR P3.0
RET
ORG 1300H
RING50:MOV R6,#40 ;操作完成,RING51:MOV R7,#20 ;1000Hz,
RING52:LCALL DL20 ;发出提示音5,CPL P3.0 ;延时0.3s
DJNZ R7,RING52
DJNZ R6,RING51
CLR P3.0
RET
ORG 1500H
DL10: MOV R5,#25;delay=1.25ms,f=500HZ,fosc=12MHz
DL12: MOV R4,#2
DL11: DJNZ R4,DL11
DJNZ R5,DL12
RET
ORG 1600H
DL20: MOV R5,#12;delay=0.625ms,f=1000HZ,fosc=12MHz
DL22: MOV R4,#25
DL21: DJNZ R4,DL21
DJNZ R5,DL22
RET
ORG 1650H
DL30:MOV R5,#50 ;delay=20ms
DL32:MOV R4,#200
DL31:DJNZ R4,DL31
DJNZ R5,DL32
RET
4、密码修改模块
本系统是通过在线输入密码而改变特定存储器中的密码值的。
程序代码:
ORG 1700H
KEYIN:SETB RS1 ;当前工作寄存器第二工作区CLR RS0