单片机实用接口技术.ppt

上传人:本田雅阁 文档编号:2309296 上传时间:2019-03-19 格式:PPT 页数:91 大小:940.51KB
返回 下载 相关 举报
单片机实用接口技术.ppt_第1页
第1页 / 共91页
单片机实用接口技术.ppt_第2页
第2页 / 共91页
单片机实用接口技术.ppt_第3页
第3页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机实用接口技术.ppt》由会员分享,可在线阅读,更多相关《单片机实用接口技术.ppt(91页珍藏版)》请在三一文库上搜索。

1、1,单片机实用接口技术,键盘接口技术 LED接口技术 A/D转换器与单片机的接口设计 D/A转换器与单片机的接口设计,2,键盘接口设计,几种设计方法 1. 利用并行口设计 2. 利用8279芯片设计,键的识别 1. 行扫描法 2. 线反转法,消除键的抖动延时扫描,键的保护多键同时按下,3,独立式按键接口电路,+5V,P1.0,P1.1,P1.2,P1.3,8031,4,5,线反转法设计要点,将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。 同前面相反,将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在

2、列为按键所在列。 综合上两步的结果,可确定按键所在行和列,从而识别出所按的键,6,键盘扫描方式,CPU对键盘的扫描分为编程扫描,定时扫描,中断扫描三种,7,8,编程扫描方式 8255的口地址:PA口:0700H PC口:0702H 控制寄存器:0703H ()判断有无键按下: A口输出全,读C 口低位,若4位为全 1, 则表示无键按下。 否则有键按下。 (2)去抖处理:软件延时10ms 再读PC口,判断有无键按 下。,开始,返回,有键闭合吗?,软件延时ms,有键闭合吗?,确定按键位置,闭合键释放?,按键值存,N,Y,N,N,Y,Y,9,(3)PA口依次逐列输出扫描信号, PC口低4位输入4位行

3、信 号,均为低电平有效。由此确定出按键的行,列位置。 (4)键闭合一次仅进行一次按键处理。待按键释放以后,才 能进行下一次按键处理。 BEGIN: ACALL KEY_ON ;判断有无键按下 JNZ DELAY ;有键按下 AJMP BEGIN DELAY: ACALL DL10MS ;去抖延时 ACALL KEY_ON ;再判断有无键按下 JNZ KEY_NUM ;有键按下,确定按键位置 AJMP BEGIN KEY_NUM: ACALL KEY_P ANL A, #0FFH JZ BEGIN ACALL KEY_CODE ;编码 PUSH A KEY_OFF: ACALL KEY_ON ;

4、等待按键释放 JNZ KEY_OFF,10,POP A RET ; 判断有无键按下子程序, 有键按下时,A的值不为0 KEY_ON: MOV A, #00H MOV DPTR, #0700H ;PA口 MOVX DPTR, A MOV DPTR, #0702H MOVX A,DPTR CPL A ANL A,#0FH RET ;延时10ms子程序(时钟6MHZ) DL10MS: MOV R7, #05H LOOP1: MOV R6, #0F9H LOOP2: NOP NOP DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET,11,;扫描按键位置的子程序 KEY_P: MOV

5、R7, #0FEH MOV A, R7 L_LOOP: MOV DPTR, #0700H MOVX DPTR, A MOV DPTR, #0702H MOVX A, DPTR ANL A,#0FH MOV R6, A ;R6中保存行号 XRL A,#0FH ;低4位取反 JZ NEXT ; 此行无键按下 AJMP KEY_C NEXT: MOV A, R7 RL A JNB ACC.0, ERROR MOV R7, A ;R7保存扫描码 AJMP L_LOOP ERORR: MOV A, #00H ; 置出错码00H RET,12,; 确定按键的行列位置子程序 KEY_C: MOV R2, #

6、00H ;R2用于行计数 MOV R3, #00H ; R3用于列计数 MOV R5, #04H MOV A, R6 ; 行号 AGAIN1: JNB ACC.0, OUT1 INC R2 RR A DJNZ R5, AGAIN1 OUT1: INC R2 MOV R5, #08H MOV A, R7 ; 列号 AGAIN2: JNB ACC.0, OUT2 INC R3 RR A DJNZ R5, AGAIN2 OUT2: INC R3 MOV A, R2 SWAP A ADD A, R3 ;行号在高4位,列号在低4位 RET,13,;编码子程序,键码=行号*8+列号 KEY_CODE: P

7、USH A ANL A,#0FH MOV R7, A ;R7=列号 DEC R7 POP A SWAP A ANL A,#0FH DEC A MOV B,#08H MUL AB ADD A,R7 RET 中断方式必须用硬件形成中断信号,14,15,编程要点: P1.0, P1.1, P1.2作为输出口输出扫描码000111, 经译码后产生列扫描信号,此时8列中只有1列为0电平。其余各都为高电平。 行状态由P1.3, P1.4读入,16,LED显示器接口设计,LED的结构 LED静态显示 LED动态显示,17,18,1. LED静态显示方式 各数码管的共阴极(或共阳极)连接在一起并接地(接+5V

8、),每个数码管的各段分别与一个8位的锁存器输出相连,这样当锁存器存入一个数据后, 数码管将始终显示此数据。 特点: 硬件电路多。 编程简单。,19,20,START: SETB P1.7 MOV R1, #06H MOV R0, #00H MOV DPTR, #TAB LOOP: MOV A, R0 MOVC A, A+DPTR MOV SBUF, A WAIT: JNB T1, WAIT ;串行输出完成否 CLR T1 INC R0 DJNZ R1, LOOP CLR P1.7 TAB: DB 06H,4FH,3FH,7FH,40H,73H 软件译码格式:D7 D6 D5 D4 D3 D2

9、D1 D0 dp g f e d c b a,21,2.LED动态显示方式 将各个数码管对应的段选线并联在一 起,由一个8位的I/O口控制,形成段选线 的多路复用。而各位的公共极(共阳或共 阴)分别由相应的I/O口线控制,实现各位 的分时选通。 特点: 硬件电路简单。 程序设计复杂。,22,23,DISP: ORL P1, #80H ; 选择8155的I/O口(P1.7=1) MOV R1, #0F8H ; 8155命令口地址 MOV A, #0F3H ;8155方式命令字 MOVX R1, A START: MOV DPTR, #TAB MOV R0, #00H MOV R2, #80H ;

10、位码 SCAN: MOV R1, #0FAH ;PB口地址 MOV A, #00H MOVX R1, A ;全暗 MOV A, R0 MOVC A, A+DPTR ;取段码 DEC R1 ;指向PA口 MOVX R1, A ;段码送PA口 MOV A, R2 INC R1 ;指向PB口 MOVX R1, A ;位码送PB口 ACALL DL1MS INC R0 MOV A, R2 ;改变位码,指向下一位,24,CLR C RRC A MOV R2, A XRL A, #00H ;改变标志寄存器 JNZ SCAN AJMP START DL1MS: SETB D3H ;PS0(D3H)= 1 M

11、OV R2, #83H ;使用第1组工作寄存器 LL0: NOP NOP DJNZ R2, LL0 CLR D3H ;恢复第0组工作寄存器 RET TAB: DB 0C6H,8CH,0C1H,0CEH,86H,88H,0A1H,91H,25,LED显示器驱动技术 发光二极管工作电流在10ma左右,而 一般I/O接口不能提供这么大的电流,需要 使用驱动电路。常用的有 ULN2003A,7 段驱动, ULN2803 8段驱动。 特点: 1。 最大驱动电流可达500ma 2。反相驱动 3。需要限流电阻,数码管越多,限流电 阻的阻值越小。,26,27,A/D转换器的接口设计 1。根据要求的精度选择位数

12、。8,12,16位 2。根据信号性质选择转换速度。 低速:直流和缓变信号,如温度, 压力, 流量 中速:工业多通道控制系统,声频信号 高速:雷达信号,视频信号 3。选择采样保持器 除直流和变化非常缓慢的信号外, 都应使用采样保持器,28,29,延时等待方式: MAIN MOV R1,#DATA MOV DPTR,#7FF8H MOV R7,#08H LOOP: MOVX DPTR,A ;启动A/D MOV R6,#0AH DLAY: NOP NOP NOP NOP NOP DJNZ R6,DLAY MOVX A,DPTR MOV R1,A INC DPTR ;指向下一通道 INC R1 DJN

13、Z R7,LOOP ,30,31,中断方式: INADC: SETB IT1 ;外部中断1设为下降沿触发中断 SETB EA ;开总中断 SETB EX1 ;开INT1中断 MOV DPTR, #0FEFFH ;选择ADC0809IN7 (P2.0=0) MOV A, #00H MOVX DPTR, A ; 启动A/D转换 PINT1: MOV DPTR, #0FEFFH MOVX A, DPTR ; 读转换数据 MOV 50H, A MOV A, #00H ; 启动下一次A/D转换 MOVX DPTR, A RETI,32,33,ADC0809A/D转换器与单片机的接口设计 一、ADC080

14、9A/D转换器的接口设计 下面以ADC0809为例来介绍A/D转换器的接口设计。 ADC 0809是一种常用的8位逐次比较式AD转换器,其特点 如下: 可直接与微处理机接口,无需另加接口逻辑。 l 具有三态锁存输出,可与微处理机总线接口。 l 具有锁存控制逻辑的8通道模拟开关可输入8个模拟信号。 l 单一电源 +5V。,34,主要指标如下: 1分辨率 8位 2转换时间 100s 3绝对误差 1LSB 4功耗 15mW 引脚功能: IN0IN7:8通道模拟量输入 A、B、C:通道选择信号,35,ALE:通道地址锁存信号。该信号上升沿把A、B、C上的 通道号锁存在地址锁存器中。 D0D7:数字量输

15、出。 OE: 输出允许。OE为1时,D0D7输出转换后的数据, OE为0时,D0D7呈高阻态。 START:启动信号,下降沿启动。 EOC:转换结束信号。该信号从启动信号上升沿开始经1、8个 时钟周期后由高电平变为低电平,表征AD转换正在 进行;64个时钟周期后(每位转换需8个时钟周期)由低 变高,表征转换结束,36,CLK:时钟输入。时钟频率640kHz。 、:基准电压输入基准电压必须满足: 0Vcc Vcc: 数字电源电压输入。 范围: +45V6V。 GND:数字、模拟公共地。 例:ADC 0809接口技术 ADC 0809带有三态输出锁存器,可以和51系列单片机的总线 直接接口,后面的

16、图示出了ADC 0809与51系列单片机的接口 电路,37,ADC 0809与8031单片机的接口电路,38,P2.3=0时,选中ADC 0809 (允许启动各通道转换与读取相应的 转换结果)转换结束信号EOC经反相后,接至单片 机的外部中断INT1,由外部中断1的中断服务程序读取 转换结果。外部中断INTl采用边沿触发方式 启动各通道进行AD转换的程序段如下: CLR P2.3 ;0809的端口地址,P2.3=0 MOV A,#N ;通道号N MOVX DPTR,A ;启动N通道,此指令用来产生 ALE和START信号 N=07,对应于IN0,IN1,IN7。,39,中断服务程序中读转换结果

17、的程序段如下: CLR P2.3 ;选中ADC0809,P2.3=0 MOVX A,R0 ;读转换结果到A中 按照前面的电路图设计一个由ADC0809构成的八通道数据采 集系统,要求:采样周期T=2秒,在每个采样周期内巡回采 集八通道模拟量输入并存放在以DATA为首地址的8个连续单 元中。 软件设计如下: ORG 0000H AJMP START ;跳转主程序 ORG 000BH AJMP CTC0 ;跳转定时中断0服务程序,40,ORG 0013H AJMP INT1 ;跳转外部中断1服务程序 START: MOV TMOD,#1 ;T0的初始化 MOV TL0,#0B0H MOV TH0,

18、#3CH MOV IP,#2 ;T0设为高优先级中断(PT0=1) SETB IT1 ;外部中断1设为下降沿触发中断 SETB TR0 ;触发T0工作 SETB ET0 ;开T0中断 SETB EX1 ;开INT1中断 SETB EA ;开总中断,41,MOV TIM,#0ECH ;秒计数单元设初值 ;其他任务(略) CTC0: PUSH A ;T0中断服务程序 MOV TL0,#0B0H MOV TH0,#3CH INC TIM MOV A,TIM JNZ CTC01 ;未到2秒,中断返回 MOV TIM,#0ECH ;已到2秒,秒计数单元设初值 MOV ABM,#0 ; 从通道0开始 AC

19、ALL SR ;调用启动A/D子程序,42,CTC01: POP A RETI ;T0中断返回 INT1: CLR P2.3 ;外部中断1服务程序 MOV A,#DATA ADD A,ABM MOV R1,A ; R1中是某通道的数据存放地址 MOVX A,R0 SETB P2.3 MOV R1,A CJNE ABM,#7,INT11 RETI,43,INT11: INC ABM ACALL SR RETI SR: CLR P2.3 ;启动ADC0809子程序 MOV A,ABM MOVX R0,A SETB P2.3 RET ABM: EQU 30H ;通道地址暂存器 DATA: EQU 3

20、1H ;采样值缓冲区(31H-38H) TIM: EQU 39H ;2秒计时单元,44,D/A转换器与单片机的接口设计 1. D/A转换器的主要技术指标 (1)分辨率 n 是D/A转换器的位数 ( 2)线性度 (3)转换精度 (4)建立时间 (5)输出电平,45,(6)输入代码 设计要点: 1. 参考电源的配置-改变输出模 拟电压的范围、极性 齐纳二极管 精密稳压电源 2. 输出电压极性 单极性 双极性 硬件电路实现,46,47,MOV DPTR, #7FFFH MOV A, #DATA MOVX DPTR, A,48,49,12位D/A转换器DAC1208系列采用双缓冲方式 输出12位数据时

21、: 1。先输出高8位D11D4 2。后输出低4位D3D0 3。先后顺序不能反 设 高8位数据在内存DIGIT单元, 低4位在DIGIT+1单元。 转换程序:,50,MOV DPTR,#4001H ;高8位地址 MOV R1,#DIGIT MOV A,R1 MOVX DPTR,A DEC DPTR ; 低4位地址 INC R1 MOV A, R1 MOVX DPTR, A MOV DPTR, #6000H ;触发12位输出 MOV DPTR, A,51,PWM脉宽调制 PWM脉宽调制信号很适合作以下工作: 1 1、 控制电机的转速(串激振流子电机、单相电机、直流 电机)和电热式加热装置。 控制电

22、机转速和电热式加热装置需要较大的功率,PWM脉 宽调制信号必须经过变换装置才能提供足以驱动电机的功 率或加热装置需要的功率,常用的变换装置是固态继电器。,Tp,Tc,52,固态继电器的主要特点如下: (1) 光电耦合器作为输入级,完善的隔离使其具有高 抗干扰能力。 (2) 输入端与DTL、TTL、HTL电平兼容,可采用直 流或脉冲触发方式。 (3) 无触点、无火花、无机械运动部件,无动作噪声, 耐振动,长寿命。 (4) 小的死区电压,小射频干扰。 (5) 内部具有RC过电压吸收电路。 (6) 高于2KV的输入、输出间及底壳间的安全绝缘电 压,UL认可的安全部件。,53,使用固态继电器作为功率变

23、换装置的电路图如下: 负载为电机(调速) 或电阻加热器(调温),+ -, ,54,1 2、 作D/A转换器 使用积分电路就可以把PWM脉冲变成D/A转换器输出的 电压信号。使用PWM实现DA转换的积分电路如图所 示。,55,在图中,输出端Vout的平均电压与PWM脉冲的占空比成 正比。 实际的Vout输出是在平均电压的基础上叠加上一定的纹波。积分电路中电容、电阻值和PWM的频率将影响纹波的幅度和频率,也影响响应速度。,56,应用实例,汽车转弯信号灯控制系统 高压泵站监控器,57,汽车转弯信号灯控制系统 1。汽车转弯时,左右尾灯和仪表板的 左转右转指示灯相应边应发出闪烁 信号。 2。当应急开关合

24、上时,所有6个信号灯 都应闪烁。 3。汽车刹车时,2个尾灯发出不闪烁信 号。 4。如刹车时正在转弯,相应的转弯闪 烁信号不受影响。,58,59,高频闪烁:信号灯以30Hz频率闪烁,产生低亮度。 用于PARK(停靠)信号有效时。 低频闪烁:信号灯以1Hz频率闪烁,产生闪烁效果。 低频闪烁用T0和软件计数器SUB_DIV实现。,当TH0= -16,TL0=0 ,晶振频率=12MHz 时则T0 每隔4096微秒中断一次。 当SUB_DIV=244(初始值),每次中断减1,减至 0历经时间为244*4096微秒=0.9999414秒 SUB_DIV.7=0 占0.5秒, SUB_DIV.7=1 占0.

25、5秒。 类似地,根据SUB_DIV.0的变化可得高频闪烁,60,输入部分,+12V,P1.0 P1.1 P1.2 P1.3 P1.4,刹车板 紧急开关 停靠灯 转弯开关,左,右,8051,61,输出部分,62,开始,置软件计数器初值,PSW入栈,PSW出栈,计算输出右侧灯,计算输出左侧灯,产生快闪信号,故障报警处理,监测故障,SUB_DIV装244,设置T0初值,模式,TH0装-16,中断返回,中断开始,有故障?,1秒到否?,允许T0中断,允许总中断,启动T0,等待,Y,N,主程序流程,中断服务程序流程,63,BRAKE EQU P1.0 ; 刹车 EMERG EQU P1.1 ; 应急 PA

26、RK EQU P1.2 ; 停靠 L_TURN EQU P1.3 ; 左转 R_TURN EQU P1.4 ; 右转 L_FRNT EQU P1.5 ; 左前灯 R_FRNT EQU P1.6 ; 右前灯 L_DASH EQU P1.7 ; 左仪表板 R_DASH EQU P2.0 ; 右仪表板 L_REAR EQU P2.1 ; 左后灯 R_REAR EQU P2.2 ; 右后灯 S_FAIL EQU P2.3 ; 故障信号 SUB_DIV EQU 20H ; 软件计数器 HI_FREQ EQU SUB_DIV.0 LO_FREQ EQU SUB_DIV.7 DIM EQU PSW.1 ;

27、位操作数暂存位,64,ORG 0000H LJMP INIT ORG 000BH ;T0中断 MOV TH0, #-16 PUSH PSW AJAMP UPDATE ORG 0040H INIT: MOV TL0, #0 MOV TH0, #-16 MOV TMOD, #01100001B ;T0方式1 MOV SUB_DIV, #244 SETB ET0 SETB EA SETB TR0 SIMP $,65,UPDATE: DJNZ SUB_DIV, T0SERV ; MOV SUB_DIV, #244 ORL P1, #11100000B ;P1.5,P1.6,P1.7置1 ORL P2,

28、 #00000111B ; P1.5,P1.6,P1.7置1 所有灯亮 CLR L_FRNT ; 关左前灯 JB T0, FAULT ;T0输入1,有故障 SETB L_FRNT ; 开左前灯 CLR L_DASH ; 关左仪表灯 JB T0, FAULT ; T0输入1,有故障 SETB L_DASH ; 开左仪表灯 CLR L_REAR ; 下面与前类似 JB T0, FAULT SETB L_REAR CLR R_FRNT JB T0, FAULT,66,SETB R_FRNT CLR R_DASH JB T0, FAULT SETB R_DASH CLR R_REAR JB T0, F

29、AULT SETB R_REAR JB T0_T0SERV FAULT: CPL S_FAIL T0SERV: MOV C, SUB_DIV.1 ; 形成占空比为 ANL C, SUB_DIV.0 ; 62.5%的30Hz ORL C, SUB_DIV.2 ; 频率信号 ANL C, PARK MOV DIM, C,67,MOV C, L_TURN ORL C, EMERG ANL C, LO_FREQ MOV L_DASH, C MOV F0, C ORL C, DIM MOV L_FRNT, C MOV C, BRAKE ANL C, /L_TURN ORL C, F0 ORL C, DI

30、M MOV L_REAR, C,68,MOV C, R_TURN ORL C, EMERG ANL C, LO_FREQ MOV R_DASH, C MOV F0, C ORL C, DIM MOV R_ FRNT, C MOV C, BRAKE ANL C, /R_TURN ORL C, F0 ORL C, DIM MOV R_REAR, C POP PSW RETI END,69,高压泵站监控器 1。分时地自动巡回检测各台高压泵的 出口压力,并将检测结果送记录仪 2。定时检测高压泵站系统压力,水箱 高低水位的3个电接点的通断状态。 3。高压泵的出口压力超限时,自动切 断相应电源,并发声光报

31、警信号。 故障排除后,由人工“解除”保护“状 态,恢复高压泵的运行。 4。系统压力,水箱高低水位的电接点 闭合时,仅发相应报警信号。,70,71,主程序:,复位入口,系统初始化,调显示设定子程序,显示控制,键识别及键代码生成,调键处理子程序,72,显示设定子程序: DSSUB: MOV R2, #4 MOV R0, #DSMEM ;R0指向显示缓冲区 DSLP: MOV R0, #0FH ;显示缓冲区 DJNZ R2, DSLP MOV A, DSWI ;DSWI*3,因为跳转表每项 ADD A, DSWI ;占3个字节,DSWI中存放的 ADD A, DSWI ;是显示格式编码。 MOV D

32、PTR, #DJPTR JMP A+DPTR DJPTR: LJMP DSUB0 LJMP DSUB1 LJMP DSUB2 LJMP DSUB3 LJMP DSUB4 LJMP DSUB5 LJMP DSUB6 DSUB0: MOV DSMEM, #10H RET,73,DSUB1: MOV R0, #DSMEM+3 MOV R0, #11H SJMP DSUB21 DSUB2: MOV R0, #DSMEM+3 MOV R0, #0FH DSUB21: DEC R0 MOV R0, #0 SJMP DSUB31 DSUB3: MOV R0, #DSMEM+3 MOV R0, #12H DE

33、C R0 MOV R0, #0CH DSUB31: DEC R0 DEC R0 MOV R0, NOBR RET DSUB4: MOV R0, #DSMEM+3 MOV R0, #13H MOV R2, #3,74,MOV R1, #RECOD DSUB41: INC R0 MOV A, R1 MOV R0, A INC R1 DJNZ R2, DSUB41 RET DSUB5: MOV R0, #DSMEM MOV R0, NOBR MOV A, #STF0-1 ADD A, R0 MOV R1, A MOV A, R1 JZ DSUB54 MOV A, NOBR ADD A, #PMEM-

34、1 MOV R1, A MOV A, R1 MOV R2, #3,75,DSUB52: INC R0 MOV R0, #0 DJNZ R2, DSUB52 MOV R2, #8 DEC R0 MOV R0, A DSUB53: MOV A, R0 RLC A MOV R0, A MOV A, DSMEM+2 ADDC A, DSMEM+2 DA A MOV DSMEM+2, A MOV A, DSMEM+1 ADDC A, DSMEM+1 DA A MOV DSMEM+1, A DJNZ R2, DSUB53 MOV A, DSMEM+2 ADD A, #25H,76,DA A MOV R2,

35、 A MOV A, DSMEM+1 ADDC A, #02H MOV DSMEM+1, A MOV A, R2 MOV B, #10H DIV AB MOV DSMEM+2, A MOV DSMEM+3, B DSUB54: RET DSUB6: MOV R2, #6 JNB DFLG, DSUB62 CLR DFLG DSUB61: INC DCNTR CJNE DCNTR, #7, DSUB62 MOV DCNTR, #1 DSUB62: MOV A, #STF0-1 ADD A, DCNTR,77,MOV R0, A MOV A, R0 JNZ DSUB63 DJNZ R2, DSUB6

36、1 RET DSUB63: MOV NOBR, DCNTR SJMP DSUB5 DFLG: “显示切换”标志位,为1,则切换显示内容 DCNTR: “显示计数器”,待显示压力的泵号 STF0: 1号泵是否被监控的启/停标志单元的地址标号,78,键处理子程序: 入口:键代码R2中 KEYPR: CJNE R2,#6,KEYP1 ;键代码6 LJMP KEYP3 KEYP1: INC R2 ;泵号=键代码+1 JB RCDF, KEYP2 SETB PNIF MOV NOBR, R2 RET KEYP2: MOV A, #STF0-1 ADD A, R2 MOV R0, A MOV A, R0

37、JZ KEYP21 MOV A, #RSET0 ADD A, RPCNT MOV R0, A MOV A, R2 MOV R0, A KEY21: RET,79,KEYP3: MOV A, R2 SUBB A, #5 MOV DSWI, A MOV R2, A ADD A, R2 ADD A, R2 MOV DPTR, #KJPTB-3 JMP A+DPTR KJPTB: LJMP KCMAD0 LJMP KCMAD1 LJMP KCMAD2 LJMP KCMAD3 LJMP KMD12 RET KCMAD0: JNB PNIF, KMD12 MOV R1, #1 SJMP KMD11 KCM

38、AD1: JNB PNIF, KMD12 MOV R1, #0,80,KMD11: MOV A, #STF0 ADD A, NUBR MOV R0, A MOV A, R1 MOV R0, A KMD12: RET KCMAD2: JNB RCDF, KMD21 MOV R2, #0 SJMP KEYP2 KMD21: JNB PNIF, KMD12 MOV A, #1 MOV R2, NUBR KMD22: DJNZ R2, KMD23 SJMP KMD24 KMD23: RL A SJMP KMD22 KMD24: CPL A ANL A, MAPCO MOV MAPCO, A,81,MO

39、V DPTR, #PORTO1 MOVX DPTR, A CLR P3.5 RET KCMAD3: JB RCDF, KMD31 SETB RCDF MOV RPCNT, #0 MOV DPNT, #4 RET KMD31: INC RPCNT MOV A, DPNT CLR C RRC A MOV DPNT, A JNC KMD32 CLR RCDF MOV DSWI, #0 KMD32: RET,82,定时中断服务程序: T0的计数初值的计算: 溢出中断周期:50ms 晶振频率: 12MHz 计数初值Tc=65536-50 =15536=3CD0H,83,TISUB: MOV TH0, #

40、3CH MOV TL0, #0D0H PUSH PSW PUSH ACC PUSH DPH PUSH DPL CLR RS1 ;选第1组工作寄存器 SETB RS0 INC R7 ;秒计数器加1 CJNE R7, #0C8H, TISUB3 ;未到1秒,转TISUB3 MOV R7, #0 ;到1秒,秒计数器置0 MOV R6, #0FFH ;巡检计数器置-1 TISUB1: INC R6 CJNE R6, #6, TISUB2 SJMP TISUB3 TISUB2: MOV A, #STF0 ADD A, R6 MOV R0, A MOV A, R0,84,JZ TISUB1 CLR P2.

41、3 MOV A, R6 MOVX R0, A INC R5 ;轮显计数器加1秒 CJNE R5, #2, TISUB3 ;未到2秒,转TISUB3 MOV R5, #0 SETB DFLG TISUB3: MOV DPTR, #PORTI1 MOVX A, DPTR RRC A MOV F0, C RRC A MOV R2, A ANL C, F0 JNC TISUB4 ANL MAPC0, #0BFH SJMP TISUB5 TISUB4: ORL MAPC0, #40H TISUB5: MOV A, R2,85,RRC A JNC TISUB6 ANL MAPC0, #7FH SJMP T

42、ISUB7 TISUB6: ORL MAPC0, #80H TISUB7: MOV A, MAPC0 MOV DPTR, #PORTO1 MOVX DPTR, A POP DPL POP DPH POP A POP PSW RETI,86,输出端口PORTO1: D7 D6 D5 D4 D3 D2 D1 D0 1# 2# 3# 4# 5# 6#,低水位报警,高压力或高水 位越限报警,输入端口PORTI1: D7 D6 D5 D4 D3 D2 D1 D0 系统压力接点状态 高水位接点状态 低水位接点状态,87,外部中断服务程序:A/D转换,D/A转换 ADSUB: PUSH A PUSH DPH

43、 PUSH DPL PUSH PSW SETB RS1 CLR RS0 CLR P2.3 MOVX A, R0 MOV SAMPL, A MOV R0, #TABLH MOV A, SCUNT JZ FILT4 MOV R2, A FILT1: MOV A, R0 CJNE A, SAMPL, FILT2 FILT2: JC FILT3 XCH A, SAMPL XCH A, R0,88,FILT3: INC R0 DJNZ R2, FILT1 FILT4: MOV R0, SAMPL INC SCUNT MOV A, SCUNT CJNE A, #5, ADSB91 MOV SCUNT, #

44、0 MOV A, TABLH+1 MOV B, #0E1H MUL AB MOV A, 0EH ADD A, #PTM0 MOV R0, A MOV R0, B MOV A, B CJNE A, #PLM, ADSB1 ADSB1: JC ADSB5 MOV A, #1 MOV R2, 0EH ADSB2: DJNZ R2, ADSB3 SJMP ADSB4,89,ADSB3: RL A SJMP ADSB2 ADSB4: ORL A, MAPC0 MOV MAPC0, A MOV DPTR, #PORTO1 MOVX DPTR, A SETB P3.5 ADSB5: MOV R2, #3 M

45、OV R0, #RSET0+2 ADSB6: MOV A, R0 DEC A DEC R0 CJNE A,0EH, ADSB7 SJMP ADSB8 ADSB7: DJNZ R2, ADSB6 SJMP ADSB9 ADSB8: MOV A, #81H MUL AB RLC A MOV A, B RLC A,90,MOV B, A MOV A, #1 ADSB81: DJNZ R2, ADSB82 SJMP ADSB83 ADSB82: RL A SJMP ADSB81 ADSB83: CPL A MOV P2, A MOV A, B MOVX R0, A ADSB9: INC 0EH MOV A, 0EH CJNE A, #6, ADSB91 SJMP ADSB92 ADSB91: MOV A, 0EH CLR P2.3 MOV R0, A ADSB92: POP PSW POP DPL POP DPH POP A RETI,91,谢谢大家!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1