1、正确与否,请自己判别!以下都是把原始数据放在 R0 中,转换之后的数据置于 R3 或 R4 中;十六进制(二进制)换成 ASCII 码;09=30H-39;A-F=41H-46HORG 0000HLJMP MAINORG 0100HMAIN:MOV R2,#2AHMOV A,R2ANL A,#0FH;取低半字节CJNE A,#10,K2;不相等则转移K2: JC K1ADD A,#07HK1: ADD A,#30HMOV R3,A;将结果保存在 R3 中MOV A,R2SWAP AANL A,#0FH;取高半字节CJNE A,#10,$+3;不相等则转移JC KADD A,#07HK: ADD
2、 A,#30HMOV R4,A;将结果保存在 R4 中LJMP $END;ASCII 码换成十六进制(二进制);30H-39H=09;41H-46H=A-FORG 0000HLJMP MAINORG 0100HMAIN:MOV R2,#41HMOV A,R2CJNE A,#40H,$+3;执行下一条语句,如果 A二进制=BCD 码;0-9=0-9;41H-46H=10-15ORG 0000HLJMP MAINORG 0100HMAIN:;MOV R2,#46H;(举例)MOV A,R2CJNE A,#40H,$+3;执行下一条语句,如果 AB 传送A 机把外部 RAM 2000H-201FH
3、单元内容通过串口发给 B 机。波特率2400b/s,晶振频率为 6MHz。A 机发送程序ORG 0000HLJMP MAINORG 0023HLJMP SINTORG 0100HMAIN: MOV SP,#60HMOV SCON,#40HMOV TMOD,#20HMOV TH1,#0FAHMOV TL1,#0FAHSETB TR1 MOV DPTR,#2000HMOV R7,#32SETB ESSETB EAMOVX A,DPTRCLR TI MOV SBUF,ALJMP $SINT: CLR TIDJNZ R7,AGAINCLR ESCLR EALJMP EXITAGAIN:INC DPTR
4、MOVX A,DPTRMOV SBUF,AEXIT: RETI单 片 机 原 理 及 其 应 用串串串串串串串串串串串 7串 MCS-51串串串串ORG0000HLJMPMAINORG0023HLJMPSINTORG0100HMAIN:MOVSP,#60HMOVSCON,#40HMOVTMOD,#21HMOVTH1,#0FAHMOVTL1,#0FAHSETBTR1MOVDPTR,#3000HMOVR7,#32CLRRISETBRENSETBEASETBESLJMP$SINT:CLRRIMOVA,SBUFMOVXDPTR,AINCDPTRDJNZR7, EXITCLRESCLREAEXIT:RE
5、TIB机 , 接 收 , 放 在 3000H-301FH乙机接受程序(查询方式)ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60HMOV SCON,#40H;串口工作于方式一MOV TMOD,#20H;T1 字段方式 2MOV TH1,#0FAHMOV TL1,#0FAH;初值设置SETB TR1MOV DPTR,#3000H;接收地址MOV R7,#32SETB RENLOOP:MOV A,SBUFCLR RIMOVX DPTR,A;接收数据存于相应地址JNB RI,$DJNZ R7,EXITINC DPTRLJMP LOOPEXIT:RETIEND第六
6、章1方波产生 例题 6-1(P107 )2定时 例题 6-2 3计数 例题 6-5采用 T0 对外部脉冲进行计数,每计数 100 个脉冲,T0 转为定时工作方式。定时 1Ms,再进行计数,如此循环。ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,#01H ;定时器/计数器 T0 为计数方式 1MOV TH0,#0FFH ;计数 100 个脉冲的初值赋值MOV TL0,#9CHSETB TR0 ;启动 T0,开始计数SETB ET0 ;允许 T0 中断SETB EA ;CPU 开中断CLR F0 ;设置下一轮为定时方式的标志位LJMP $IT0P: JB F0,COUNT ;CPU 关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#01H ;定时器/计数器 T0 为定时方式 0MOV TH0,#0FEH ;定时 1ms 初值赋值MOV TL0,#0CHSETB F0RETICOUNT: MOV TMOD,#05HMOV TL0,#9CHMOV TH0,#0FFHRETIEND