标题: 单片机串口和计算机通信_汇编语言 [打印本页]

作者: admin    时间: 2010-4-11 01:38
标题: 单片机串口和计算机通信_汇编语言

;晶振是11.0592M不可搞错
;下载程序以后,联接好串口线
;然后打开串口调试软件,按照您连接的串口,设置好串口特性(注意波特率设置2400)
;然后发送数据给下面的机器,并接受下面发送上来的数据!
;勾选下面的"16进制发送",输入01 ,02 ,FF等 然后点手动发送


      beep    bit   p2.2              ;蜂鸣器定义

        org 00h
      jmp main
        org 23h                       ;串行中断入口地址
      jmp com_int                     ;串行中断服务程序

;***********  主程序开始    *******************
        org 30h
  main:  mov sp,#30h            ;设置堆栈
         lcall rest             ;初始化
         lcall comm             ;串口初始化
         jmp $                  ;原地等待

;  *************   初始化   *********************
   rest:     ;mov p0,#00h              ;禁止数码管显示
             ;mov p2,#255
             setb  beep                ;禁止蜂鸣器
             setb  p1.4                 ;禁止LED显示
             RET                      ;返回

; **************  串口初始化   *****************
;设置串行口工作方式1,定时器1作为波特率发生器
;波特率设置为   2400  ;

comm:         mov tmod,#20h          ;设置定时器T1工作方式2
              mov tl1,#0f4h          ;定时器计数初值,波特率 2400
              mov th1,#0f4h          ;定时器重装值
              setb ea                ;允许总的中断
              setb es                ;允许串行中断
              mov pcon,#00h          ;波特率不倍增
              mov scon,#50h          ;设置串口工作方式1,REN = 1 允许接收
              setb tr1               ;定时器开始工作
              ret                    ;返回
;***************  串口中断服务程序   ***********
;  如果接收  0FF  表示上位机需要联机信号,单片机发送 0FFH作为
;  应答信号,如果接收到 数字 1~ n,表示相应的功能;
;  这里,如果收到 1 ,则单片机向计算机发送字符  'H';
;  如果收到 2 ,则单片机向计算机发送字符  'e';
;  如果收到其他的数据,则发送    'J';
com_int:  clr es                        ;禁止串行中断
                clr ri                  ;清除接收标志位
                mov a,sbuf              ;从缓冲区取出数据
                mov p1,a
                mov dptr,#tab
                cjne a,#0ffh,in_1       ;检查数据
                mov sbuf,#255           ;收到联机信号,发送联机信号
                jnb ti,$                ;等待发送完毕
                clr ti                  ;清除发送标志
                setb es                 ;允许串行中断
                reti                    ;中断返回
      in_1: cjne a,#1H, in_2            ;如果收到1
                movc a,@a+dptr
                mov sbuf,a              ;发送 'h'
                jnb ti,$                ;等待发送完毕
                clr  ti                 ;清除发送中断标志
                setb es                 ;允许串行中断
                reti                    ;中断返回
      in_2: cjne a,#2,in_3              ;接收到  2
                movc a,@a+dptr
                mov sbuf,a              ;发送 'e'
                jnb ti,$                ;等待发送完毕
                clr  ti                 ;清除发送中断
                setb es                 ;允许串行中断
                reti                    ;中断返回
      in_3:     mov a,#03h
                movc a,@a+dptr
                mov sbuf,a              ;发送 'j'
                jnb ti,$                ;等待发送完毕
                clr ti                  ;清除发送中断标志
                setb es                 ;允许串行中断
                reti                    ;返回
tab:    db '2','h','e','j'
  end

 

下载地址:http://www.51hei.com/ziliao/51hei-5/串口和计算机通信_asm.rar

[此贴子已经被作者于2010-4-11 1:40:17编辑过]

作者: ruya3699    时间: 2014-6-15 16:26
谢谢分享                           
作者: 雪中梅花    时间: 2014-6-20 07:34
谢谢楼主的奉献。
作者: 场效应    时间: 2014-6-23 15:16
认真预读了,
作者: 无罪之宾    时间: 2014-7-2 00:44
学习了,谢谢诶




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1