找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6001|回复: 4
收起左侧

单片机串口和计算机通信_汇编语言

[复制链接]
ID:1 发表于 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编辑过]
回复

使用道具 举报

ID:62967 发表于 2014-6-15 16:26 | 显示全部楼层
谢谢分享                           
回复

使用道具 举报

ID:61875 发表于 2014-6-20 07:34 | 显示全部楼层
谢谢楼主的奉献。
回复

使用道具 举报

ID:36319 发表于 2014-6-23 15:16 | 显示全部楼层
认真预读了,
回复

使用道具 举报

ID:61840 发表于 2014-7-2 00:44 | 显示全部楼层
学习了,谢谢诶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表