No.88418 作者:xufei2004 邮件:xufei2004009@126.com ID:46577 登陆:1次 文章数:3篇 最后登陆IP:218.13.141.124 最后登陆:2006/2/23 11:49:51 注册:2006/1/24 8:44:31 财富:109 发帖时间:2006/1/24 8:50:07 发贴者IP:218.13.129.54 标题:xufei2004:关于8051与ADC0809的汇编问题!! 摘要:No.88418关于8051与ADC0809的汇编问题!! 我是初学单片机的,最近在搞一个8051与ADC0809的汇编程序,但在用软件调试的过程发现很多问题,但我又实在部知道怎样改过来,希望各位大虾们能帮帮忙,帮我看看咯 程序如下: ORG 0013H ;中断服务程序入口 AJMP PINT1 ORG 2000H MAIN: MOV R1,#0ATA ;置数据区首地址 SETB IT1 ;为边沿触发方式 SETB EA ;开中断 SETB EX1 ;允许中断 MOV DPTR,#7FF8H ;指向IN0通道 MOVX @DPTR,A ;启动A/D转换 LOOP: NOP ;空操作,用于延长时间 AJMP LOOP ;直接跳转指令 ORG 2100H ;中断服务程序入口 PINT1: PUSH PSW ;保护现场 PUSH ACC PUSH DPL PUSH DPH MOV DPTR,#7FF8H MOVX A,@DPTR ;读取转换后数据 MOV @R1,A ;数据存入以DPTR为首地址的RAM中 INC R1 ;修改数据区指针 MOVX @DPTR,A ;再次启动A/D转换 POP DPH ;恢复现场 POP DPL POP ACC POP PSW RETI ;中断返回 P: CJNE R1, #4.AEH, LP1 ;将R1中现存的温度转换成的十六进制电压值与 48℃的十六进制数4.AEH比较,如果R1中温度不等 于48℃则指令跳转到LP1,相等则指令顺下执行 AJMP LP11 ;直接跳转指令,直接跳转到LP11 LP1: JNC LP11 ;进位标志位CY的状态判转指令,如果R1中的温度大于48℃,则CY=0,指令转移到LP11;如果R1中的温度小于48℃,则CY=1,指令顺下执行 CLR P1.0 ;清空P1.0口,把继电器1的控制口断电,断开继电器1 AJMP MAIN ;直接跳转指令,温度低于48℃,直接跳转到MAIN,重新检测温度 LP11: SETB P1.0 ;将P1.0口置1,接通继电器1 CJNE R1, #4.BAH, LP2 ;将R1中温度继续与48.5℃比较,不等于则跳转到LP2,相等则顺下执行 AJMP LP22 ;温度等于48.5℃,指令直接跳转到LP22 LP2: JNC LP22 ;R1中温度大于48.5℃,则CY=0,指令跳转到LP22;小于48.5℃,则CY=1,指令顺下执行 CLR P1.1 ;清空P1.1口,把继电器2的控制口断电,断开继电器2 AJMP MAIN LP22: SETB P1.1 ;将P1.1口置1,接通继电器2 CJNE R1, #4.C7H, LP3 ;将R1中温度继续与49℃比较,不等于则跳转到LP3,相等则顺下执行 AJMP LP33 ;温度等于49℃,指令直接跳转到LP33 LP3: JNC LP33 ;R1中温度大于49℃,则CY=0,指令跳转到LP33;小于49℃,则CY=1,指令顺下执行 CLR P1.2 ;清空P1.2口,把继电器3的控制口断电, ......
>>返回讨论的主题
|