求教使用UART 模式0来作SPI驱动74164获595做IO扩展
单片机没有多余的IO口,也没有SPI,只留一个UART网上有人说可以用模式0来代替SPI,看手册“模式0:串行数据通过RxD进出,TxD输出移位时钟。每次发送和接收8位,波特率固定为CPU 1/16”
但没有任何例子来说明怎么使用...
求解?????? 我试过
串口好像不行
最后用单片机模拟SPI解决的 发估计没问题,收就难说了 收发都没有问题,但是要注意时序。51的同步USART不完全支持SPI的所有模式的 yklstudent 发表于 2014-10-25 07:18
发估计没问题,收就难说了
你好我只需要发谢谢 takashiki 发表于 2014-10-25 07:35
收发都没有问题,但是要注意时序。51的同步USART不完全支持SPI的所有模式的
请问不支持什么模式?怎么处理只发的情况?有代码可以参考么??
非常感谢 duedue 发表于 2014-10-25 07:59
请问不支持什么模式?怎么处理只发的情况?有代码可以参考么??
非常感谢 ...
你可以对照时序图看。51的只支持LSB、时钟相位为高,时钟极性好像没什么要求。如果需要MSB就直接软件查表处理成LSB的,时钟极性为低(这个还真少见)就外加反相器。
代码参考:
人品不怎么样的老妖的PDF里面其实都有,他的东西大而全,包括电路图、程序、广告……
贴完了才发现,那是输入的,下面是输出的:START: MOV R7,#02H ;设置要发送的字节个数
MOV R0,#30H ;设置地址指针
MOV SCON,#00H ;设置串行口方式 0
SEND: MOV A,@R0
MOV SBUF,A ;启动串行口发送过程
WAIT: JNB TI,WAIT ;一帧数据未发送完,循环等待
CLR TI
INC R0 ;取下一个数
DJNZ R7,SEND
RET
老妖的例程是汇编的,你自己改成C的吧,反正就这么个意思。 takashiki 发表于 2014-10-25 08:25
贴完了才发现,那是输入的,下面是输出的:
老妖的例程是汇编的,你自己改成C的吧,反正就这么个意思。 ...
非常非常感谢
学习了!
页:
[1]