云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C 语言与汇编语言混合编程实例介绍

C 语言与汇编语言混合编程实例介绍

  • 62 次阅读
  • 3 次下载
  • 2025/7/7 0:01:44

RE1:CLR DQ ;读前总线保持为低 MOV R4,#4 NOP

SETB DQ ;开始读总线释放 RE2:DJNZ R4,RE2 ;持续8us

MOV C,DQ ;从ds1820总线读得一个bit RRC A ;把读得的位值环移给 A MOV R5,#30

RE3:DJNZ R5,RE3 ;持续60us DJNZ R6,RE1 ;读下一个bit

SETB DQ ;重新释放ds1820总线 RET END

1.4 读单个DS18B20芯片序列号的汇编语言程序

;/***************************************************************** ;/* 这是DS18B20的汇编程序, 文件名D18B20.ASM */ ;/* 功能:本程序主要是读出芯片DS18B20固有的序列号,序列号共64位, */ ;/* 也就是8个字节,读出后依次放在单片机的RAM 40H,41H,...47H中。*/ ;/* 单片机的P1.0接DS18B20的BQ。 */ ;/* 本芯片的序列号为: 28h,10h,46h,e2h,00,00,00,7eh */ ;/***************************************************************** DQ EQU P1.0 ORG 0000H AJMP MAIN ORG 0020H MAIN:

MOV SP,#60H

CLR EA ;使用ds1820一定要禁止任何中断产生 LCALL INT ;初始化ds1820 MOV A,#33H

LCALL WRITE ;送入读ds1820的ROM命令 LCALL READ ;开始读出当前ds1820序列号 MOV 40H,A LCALL READ MOV 41H,A LCALL READ MOV 42H,A LCALL READ

MOV 43H,A LCALL READ MOV 44H,A LCALL READ MOV 45H,A LCALL READ MOV 46H,A LCALL READ MOV 47H,A SETB EA SJMP $

INT: ;初始化ds1820子程序 CLR EA

L0: CLR DQ ;ds1820总线为低复位电平 MOV R2,#200 L1: CLR DQ

DJNZ R2,L1 ;总线复位电平保持400us SETB DQ ;释放ds1820总线 MOV R2,#30

L4: DJNZ R2,L4 ;释放ds1820总线保持60us CLR C ;清存在信号 ORL C,DQ

JC L0 ;存在吗?不存在则重新来 MOV R6,#80 L5: ORL C,DQ JC L3 DJNZ R6,L5 SJMP L0 L3: MOV R2,#240 L2: DJNZ R2,L2 RET

WRITE: ;向ds1820写操作命令子程序 CLR EA

MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit WR1: SETB DQ MOV R4,#8

RRC A ;把一个字节data(A)分成8个bit环移给 C CLR DQ ;开始写入ds1820总线要处于复位(低)状态 WR2: DJNZ R4,WR2 ;ds1820总线复位保持16us MOV DQ,C ;写入一个bit MOV R4,#20

WR3: DJNZ R4,WR3 ;等待40us DJNZ R3,WR1 ;写入下一个bit SETB DQ ;重新释放ds1820总线 RET READ: CLR EA

MOV R6,#8 ;连续读8个bit RE1: CLR DQ ;读前总线保持为低 MOV R4,#4 NOP

SETB DQ ;开始读总线释放 RE2: DJNZ R4,RE2 ;持续8us

MOV C,DQ ;从ds1820总线读得一个bit RRC A ;把读得的位值环移给 A MOV R5,#30

RE3: DJNZ R5,RE3 ;持续60us DJNZ R6,RE1 ;读下一个bit

SETB DQ ;重新释放ds1820总线 RET END

1.5 读多个DS18B20芯片温度值的汇编语言程序

;**************************************************************** ;/* 这是DS18B20的汇编程序, 文件名D18B203.ASM */ ;/* 功能:本程序主要是读出多个DS18B20芯片转换后的温度值,这里用 */ ;/* 两个DS18B20芯片。单片机的P1.0接DS18B20的BQ。第1个DS18B20 */ ;/* 芯片的温度值放在50H和51H单元(高字节在50H中),第2个DS18B20*/ ;/* 芯片的温度值放在52H和53H单元(高字节在52H中)。本程序适合 */ ;/* 多个DS18B20 和51单片机的连接,晶振为12MHZ左右。 */ ;****************************************************************** DQ EQU P1.0 ORG 0000H AJMP MAIN

ORG 0020H MAIN:

MOV SP,#60H LCALL GET_TEMP SJMP $ GET_TEMP: CLR PSW.4

SETB PSW.3 ;设置工作寄存器当前所在的区域 CLR EA ;使用ds1820一定要禁止任何中断产生 LCALL INT ;调用初使化子程序 MOV A,#0CCH

LCALL WRITE ;送入跳过ROM命令 MOV A, #44H

LCALL WRITE ;送入温度转换命令

LCALL INT ;温度转换完全,再次初使化ds1820 MOV A,#55H

LCALL WRITE ;送入匹配ROM命令 MOV A,#28H

LCALL WRITE ;发第1个DS18B20序列号(28H,10H,46H,0E2H,00,00,00,7EH) MOV A,#10H LCALL WRITE MOV A,#46H LCALL WRITE MOV A,#0E2H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#7EH LCALL WRITE MOV A,#0BEH

LCALL WRITE ;送入读温度暂存器命令 LCALL READ

MOV 51H,A ;读出温度值低字节存入51H

搜索更多关于: C 语言与汇编语言混合编程实例介绍 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

RE1:CLR DQ ;读前总线保持为低 MOV R4,#4 NOP SETB DQ ;开始读总线释放 RE2:DJNZ R4,RE2 ;持续8us MOV C,DQ ;从ds1820总线读得一个bit RRC A ;把读得的位值环移给 A MOV R5,#30 RE3:DJNZ R5,RE3 ;持续60us DJNZ R6,RE1 ;读下一个bit SETB DQ ;重新释放ds1820总线 RET END 1.4 读单个DS18B20芯片序列号的汇编语言程序 ;/*************************************************************

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com