您现在的位置: 主页 > MCU > 单片机技术应用 > AVR双CPU通信程序(异步方式)UART -
本文所属标签:
为本文创立个标签吧:

AVR双CPU通信程序(异步方式)UART -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
;****************************************;功能:AVR双CPU通信程序,异步方式,类似于UART;器件:AT90S2313;硬件:主从CPU的PD.2通过上拉电阻连接;时钟:4.0MHz;***********************************

;****************************************
;功能:AVR双CPU通信程序,异步方式,类似于UART
;器件:AT90S2313
;硬件:主从CPU的PD.2通过上拉电阻连接
;时钟:4.0MHz
;****************************************

本文引用地址: http://www.21ic.com/app/mcu/201807/765367.htm

.include"2313def.inc"

.equport=PORTD
.equPIN=PIND
.equddr=DDRD
.equbit=2
;*****************************************
;中断向量表
;*****************************************
.org0x000
rjmpmain
rjmpINT0_isr
reti
reti
reti
reti
reti
reti
reti
reti
;*****************************************
;程序入口
;*****************************************
.org0x000B
main:ldiR16,0xDF;设置堆栈指针
outspl,R16

cbiport,bit;设置端口方向
cbiddr,bit

ldiR16,0x02;INT0下降沿有效
outMCUCR,R16
ldiR16,0x40;INT0中断使能
outGIMSK,R16

sei;全局中断使能

ldiR28,0x60
ldiR29,0x00
ldiR22,0x10

here:ldiR30,0x55;测试
rcallsendbyte
rjmphere
;*****************************************
;过程名:Delay
;功能:us级别精确延时
;入口参数:R16延时时间微秒数-2
;出口参数:无
;影响资源:
;*****************************************
delay:decR16
nop
brnedelay
nop
ret
;*****************************************
;外部中断INTI0中断服务程序(读数)
;*****************************************
INT0_isr:
ldiR16,0x49;延时75us
rcalldelay
sbICpin,bit
rjmpskip
clrR30
rcallreadbit;CLOCk1
rcallreadbit;Clock2
MOVR31,R30

ldiR20,0x08
RNext:rcallreadbit;读数
decR20
brneRNext

deal:nop;数据处理,数据存放在R30中,两个时钟信号存在R31
的高两位

skip:reti;非起始信号,跳过
;*****************************************
;过程名:readbit
;功能:从总线上读取一位数据
;入口参数:无
;出口参数:R30
;影响资源:R16
;*****************************************
readbit:
ldiR16,0x08;延时10us
rcalldelay

waitu1:sbispin,bit;Waitfor"1"
rjmpwaitu1
waitu2:sbispin,bit;Waitfor"1"
rjmpwaitu2
waitu3:sbispin,bit;Waitfor"1"
rjmpwaitu3
waitu4:sbispin,bit;Waitfor"1"
rjmpwaitu4

waitf1:sbicpin,bit;Waitforthefallingedge
rjmpwaitf1
waitf2:sbicpin,bit;Waitforthefallingedge
rjmpwaitf2
waitf3:sbicpin,bit;Waitforthefallingedge
rjmpwaitf3
waitf4:sbicpin,bit;Waitforthefallingedge
rjmpwaitf4

ldiR16,0x2B;延时45us
rcalldelay

clc;清C
sbispin,bit
sec

rorR30;存数

ret
;*****************************************
;过程名:sendbit
;功能:传出一位数据
;入口参数:R30
;出口参数:无
;影响资源:
;*****************************************
sendbit:
sbrsR30,0
rjmpsend0
send1:sbiddr,bit;Senda"1"
ldiR16,0x3A
rcalldelay
cbiddr,bit
ldiR16,0x1C
rcalldelay
ret
send0:sbiddr,bit;Senda"0"
ldiR16,0x1C
rcalldelay
cbiddr,bit
ldiR16,0x3A
rcalldelay
ret
;*****************************************
;过程名:sendbyte
;功能:传出一个字节数据
;入口参数:R30
;出口参数:无
;影响资源:R24
;*****************************************
sendbyte:;测试总线是否忙
sbispin,bit
rjmpsendbyte
ldiR16,0x76;延时120us
rcalldelay
sbispin,bit;测试
rjmpsendbyte

cli;关中断

sbiddr,bit;总线初始化
ldiR16,0x58;延时90us
rcalldelay
cbiddr,bit
ldiR16,0x1C;延时30us
rcalldelay

sbiddr,bit;Clock1
ldiR16,0x3A;延时60us
rcalldelay
cbiddr,bit
ldiR16,0x1C;延时30us
rcalldelay

sbiddr,bit;Clock2
ldiR16,0x1C
rcalldelay;延时30us
cbiddr,bit
ldiR16,0x3A;延时60us
rcalldelay

ldiR24,0x08;设置计数器
nextbit:
rcallsendbit;输出数据
rorR30
decR24
brnenextbit

ldiR16,0xFF;清中断标志
outGIFR,R16
sei;开中断

ret




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > AVR双CPU通信程序(异步方式)UART -
 

"AVR双CPU通信程序(异步方式)UART -"的相关文章

网站地图

围观()