单片机中断单线实现数据传输.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机中断单线实现数据传输 硬件电路如下:P3.0JKDP3.1/TXD 硬件电路如下: P3.0JKD P3.1/TXD P3.2ANT0 P3.3Abff P3.4JT0 P33/T1 在程序的开始时设定 TCON,外部中断均为低电平触发,使得利用 P3.2通信成为可能。 MOV TCON,#15H 设置为下降沿触发方式 Receive_Data: ;From INTO 数据线始终为高,当有下降沿时,产生中断 MOV IE,#88H 打开总中断和串行中断允许 CLR TF0 LCALL Free_INT JBC Wait_Decoder_ACK,E nable_Se nd_Data Receive_Next_Byte: Ren ew_Timer1 ;Receive_Down_ByteO 设置波特率,计算方法见下 MOV R3,#07 ;WILL RECEIVE BITS R_Next_Bit: CLR En d_Tra nsport JNB End_Transport,$; 定时中断 1,中断嵌套,设置 END_TRANSPORT MOV C,Data_L ine RRC A DJNZ R3,R_Next_Bit RR A ANL A,#7FH 当接收到停止指令 FFH时,跳出 CLR TR1 CLR ET1 JNB Data_L in e,$ 等待释放 JB RXD_Proc,Store_Next_Byte MOV R1,#RXD_Buf SETB RXD_Proc Store_Next_Byte: MOV @R1,A INC R1 CJNE A,#7FH,Continue_Receive_Data A=FFH7FH=7FH,跳出 CLR RXD_Proc LJMP Ext_Call_Proc Con ti nu e_Receive_Data: Receive_Time JB Data_Li ne,$ MOV TH0,#0 MOV TL0,#1 CLR T0_For_Receive LJMP Receive_Next_Byte 一一一一一一一一 ************ 一一一一一一一一一一一一一一一一一一 En able_Se nd_Data: MOVMOVRET MOV MOV RET Ren ew_Timer1 MOV MOV SETB CLR SETB R30,#01H R31,#01H MACRO TH1,#FCH TL1,#BFH TR1 TF1 ET1 ;2000bps,833 cycles,at 20MHz ENDM 简单介绍一下波特率的计算方法: 我们用逆运算方法来推出公式: 初值FCBF=64703,也就是说经过65536-64703=833个机器周 期产生一次翻转,833次机器周期的时间为 833*12/20M=2000,也就得到了如下公式: 65536-初值=1/波特率*focus/12,既可以求出初值。 Tran sport_Data: LCALL Request_Se nd_Data 调用 JNB Wait_Decoder_ACK,Start_Se nd_Data CLR Wait_Decoder_ACK LCALL Free_INT LJMP Main_Body ;_1 Start_Se nd_Data: Dly_CycleM 250 MOV IE,#88H 选择寄存器组1 选择寄存器组1 发送TXD_BUF中的内容 发送余下内容,直到停止位 FFH MOV PSW,#08H LCALL Free_INT MOV R0,#TXD_Buf MOV A,@R0 LCALL Sen d_Byte_To_Decoder DEC R0 Continu e_To_Decoder: INC R0 MOV A,@R0 LCALL Sen d_Byte_To_Decoder MOV A,@R0 CJNE A,#FFH,Co ntinu e_To_Decoder CLR IE0 CLR IE1 CLR TF0 MOV IE,#87H POP PSW RET ?***************** J Request_Send_Data: ;INPUT A----WAIT TRANSPORTED WORD 拉低一次 DATA_LINE SETB Wait_Decoder_ACK 等待解码器相应,如果响应 MOV R33,#100 ;REQUIRE 100 TIMES 则可以发送数据 Decoder_Not_ACK_Yet: MOV IE,#80H CLR Data_L ine Dly_CycleM 150 SETB Data_L ine JNB Data_Li ne,$ MOV R30,#100 ;DELAY 2

您可能关注的文档

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档