|
马老师:您好!我用74HC595模拟AVR的SPI通信,那用PC口来模拟SPI总线时序,也即实现端口扩展,但是写的这个程序无法实现功能,595的输出全成了低电平,也找不出问题了,所以发帖请帮忙,图见附件!
程序如下:(延时不用管,我是有的,只不过没在这儿贴上来而已)
#include <iom48v.h>
#include <macros.h>
#include "delay_us.h"
#define SH_high PORTC|=BIT(PC4) // 串行移位脉冲高电平,PC4口产生
#define SH_low PORTC&=~BIT(PC4)//串行移位脉冲低电平,PC4口产生
#define ST_high PORTC|=BIT(PC3) //并行输出脉冲高电平,PC3口产生
#define ST_low PORTC&=~BIT(PC3)//并行输出脉冲低电平,PC3口产生
void main(void)
{
unsigned char i,j;
DDRC=0xff;
PORTC=0xff;
while(1)
{
SH_low;
delay_us(10);
ST_low;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
PORTC|=(1<<5);//8位数据全为1
delay_us(10);
//PORTC&=temp;
SH_high; //开始串行送出数据
delay_us(10);
SH_low;
delay_us(10);
}
delay_us(10);
ST_high;//送并行端口
delay_us(10);
ST_low;
delay_us(10);
}
}
}
麻烦马老师仔细看看,给我找找原因,谢谢您了!
![](http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_574280.png)
(原文件名:QQ截图未命名.png) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|