义隆单片机C语言2ms中断,义隆单片机编程时应注意的几点.doc

义隆单片机编程时应注意的几点

EM78系列单片机--异步串行通信设计

图5.8 RS232的发送和接收流程

程序清单如下:

;定义

STATUS EQU 3

P5 EQU 5

P6 EQU 0X06

BUFFER EQU 0X11

COUNT EQU 0X12

BITNUM EQU 8 ;每字节数据为8位

ORG 0

JMP MAIN

;主程序

MAIN: MOV A,@0X40 ;置P6.5为输出口,P6.6为输入口

IOW P6

CLR BYTE

MOV A,@BITNUM

MOV COUNT,A ;传送数据为每字节8位

;以下为接收

TEST: JBC P6,6 ;检测是否收到起始位

JMP TEST ;未测到

CALL DELAY ;测到起始位,下面准备接收

CALL DELAY ;延时

START: JBC P6,6

BS BYTE,7 ;收到高电平

JBS P6,6

BC BYTE,7 ;收到低电平

DJZ COUNT

JMP L1 ;一个字节未收完,继续收下一位

CALL DELAY

JMP TRANSMIT ;一个字节收完,准备发送

L1: RRC BYTE

CALL DELAY

JMP START

;以下为发送

TRANSMIT:

MOV A,@BITNUM

MOV COUNT,A

BEGIN: BC P6,5 ;发送起始位

CALL DELAY1 ;延时

L2: RRC BYTE ;发送一位数据

JBC STATUS,C

BS P6,5

JBS STATUS,C

BC P6,5

CALL DELAY1 ;延时

DJZ COUNT ;一个字节发送完否?

JMP L2 ;否,继续发送下一位

BS P6,5 ;是

CALL DELAY1

JMP TEST ;继续循环

;延时子程序

DELAY: MOV A,@23

MOV BUFFER,A

LOOP: DJZ BUFFER

JMP LOOP

RET

DELAY1: MOV A,@30

MOV BUFFER,A

LOOP1: DJZ BUFFER

JMP LOOP1

RET

EM78系列单片机--延迟子程序的编写

LP_CNT0 == 0X20 ;定义。

LP_CNT1 == 0X21

MOV A, @2 ;A = 2。

MOV LP_CNT0, A ;设定延迟寄存器0(LP_CNT0)=2

CALL P0_DLY ;呼叫时间延迟子程序。

P0_DLY:

NOP ;调节延迟时间。

MOV A, @200 ;设定 A = 200。

MOV LP_CNT1, A ;设定寄存器LP_CNT1 = 200。

P0_LP:

NOP ;调节延迟时间。

NOP ;调节延迟时间。

NOP ;调节延迟时间。

DJZ LP_CNT1 ;递減LP_CNT1,为0就跳过下一行

JMP P0_LP ;循环。

DJZ LP_CNT0 ;递減LP_CNT0,为0就跳过下一行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值