文章搜索

PC与RS232串行通迅程序

发表时间:2015-4-30  作者:admin  浏览次数:1739  
字体大小: 【小】 【中】 【大】

;********************************************************************************
;*  描述:                                                                       *
;*         单片机接收主机的数据,然后将数据传送到P2口, 并传回给主机;             *
;*         当按下S4时, 单片机发送字串"www.picavr.com\n\r" 给主机                *  
;*  实验方法:                                                               
;*        1、将 J24和J25的短接冒放置到(2,3) 位置,或者拿开J14和J15的短接冒     ;
;*        2、将 J14和J15的(1,2)用短接冒短接起来。这样就可做串口通讯了。        *
;********************************************************************************
;* 【版权】 Copyright(C)东哥单片机学习网 www.picavr.com  All Rights Reserved       
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                                  
;********************************************************************************
                S4 EQU P3.6  ; 按键端口

                ORG     0000H          ;程序执行开始地址
                LJMP    START          ;跳至START
                ORG     0003H          ;外中断0中断程序入口
                RETI    ;跳至INTEX0中断服务程序
                ORG     000BH   ;定时器T0中断程序入口
                RETI    ;中断返回
                ORG     0013H          ;外中断1中断入口
                RETI    ;跳至INTEX1中断服务程序
                ORG     001BH   ;定时器T1中断程序入口
                RETI    ;跳至INTT1中断服务程序
                ORG     0023H   ;串口中断入口地址
                RETI    ;中断返回
                ORG     002BH          ;定时器T2中断入口地址
                RETI    ;中断返回
;*******************************************************               
START:         
                MOV     SP,#60H          ; 堆栈在60H开始

         MOV TMOD,#20H    ; 定时器1工作于8位自动重载模式,用于产生波特率
         MOV TH1,#0FDH
         MOV TL1,#0FDH  ; 波特率9600
 
         MOV SCON,#50H  ; 设定串行口工作方式
             ANL PCON,#0EFH  ; 波特率不倍增
 
              SETB TR1   ; 启动定时器1
         MOV IE,#0   ; 禁止任何中断

;*******************************************************  
MAIN:
              JNB RI,MAIN1  ; 是否有数据到来
        CLR RI
        MOV A,SBUF   ; 暂存接收到的数据
        MOV P2,A   ; 数据传送到P2口
        LCALL SEND          ; 回传接收到的数据
 
MAIN1:
        JB       S4,MAIN          ;
        LCALL DELAY10MS   ;  延时去抖动
        JB       S4,MAIN          ;
        JNB      S4,$             ;
        LCALL KEY_SEND  ;  键处理
        SJMP MAIN             ;
;*******************************************************  
; 按键处理子程序 --- 发送字符串到PC 
;******************************************************* 
KEY_SEND:

        MOV DPTR,#TABLE   ; 字串表格地址
SEND_1:
        CLR A                ;
        MOVC A,@A+DPTR        ;
        JZ SEND_END  ; 查到00H时,表示字串结束
        ACALL SEND             ;
        INC DPTR   ; 下一字符
        SJMP SEND_1           ;
SEND_END:
        RET                  ;
;******************************************************* 
; 传送一个字符 ACC为(要发送的数据)
;******************************************************* 
SEND:
       MOV SBUF,A
       JNB TI,$    ; 等特数据传送
       CLR TI   ; 清除数据传送标志
       RET
;******************************************************* 
;按键延时
;******************************************************* 
DELAY10MS:
       MOV R7,#10           ;
DELAY1:
          MOV R6,#0D8H         ;
DELAY2:
       NOP                        ;
       NOP                        ;
       DJNZ R6,DELAY2        ;
       DJNZ R7,DELAY1        ;
       RET                        ;
;******************************************************* 
TABLE:
       DB "www.picavr.com" ;
            DB 0AH,0DH   ;换行/回车
       DB 00H              ;
       END                        ;
;*******************************************************

本站已经获得中华人民共和国工信部、通信管理局审批通过 国家ICP备案序号: 赣ICP备13006653号-2

电工电子技术QQ群(1):66585281电工电子技术QQ群(2):197874883电工电子技术QQ群(3):29019650 

版权归刘昆山所有©2013-2020转载须经本人同意,否则后果自负!  《我的电子制作经验》www.dgdz.net All Rights Reserved.

管 理