找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2207|回复: 9
收起左侧

74HC595的单片机程序问题

[复制链接]
ID:590194 发表于 2019-9-16 09:25 | 显示全部楼层 |阅读模式
为什么main主程序里面不能加子程序  提示错误
HC595-DRIVE.C(89): warning C206: 'Send_595': missing function-prototype
HC595-DRIVE.C(89): error C267: 'Send_595': requires ANSI-style prototype
HC595-DRIVE.C(150): error C231: 'Send_595': redefinition
HC595-DRIVE.C(159): error C231: 'Send_595': redefinition



void Send_595(u8 dat)
{               
        u8        i;
        for(i=0; i<8; i++)
        {
                dat <<= 1;
                P_HC595_SER   = CY;
        //        P_HC595_SRCLK = 1;
        //        P_HC595_SRCLK = 0;
        }
}



哪里出了问题??
还有 这个CY是什么意思?




回复

使用道具 举报

ID:405033 发表于 2019-9-16 10:54 | 显示全部楼层
能把cy的定义给出来吗,还有你这个函数重定义了,你看下整个c文件吧,好好检查一下
回复

使用道具 举报

ID:462827 发表于 2019-9-16 11:18 | 显示全部楼层
CY在reg51.h之类的头文件里有定义,它是状态字中的符号标志位。

你可以对Send_595()函数进行声明,这样就不会提示它未定义了。
回复

使用道具 举报

ID:275826 发表于 2019-9-16 11:27 | 显示全部楼层
函数要在调用之前定义或声明,你应该没有声明
回复

使用道具 举报

ID:123289 发表于 2019-9-16 20:24 | 显示全部楼层
你的程序作用了CY,
你不知道CY是什么?同样如果编译器也不知道CY是什么?它就报错!
楼上各位说的都是对的。
回复

使用道具 举报

ID:590194 发表于 2019-9-17 09:19 来自手机 | 显示全部楼层
我去,各位都是大神,CY我搜索了全文都没有搜索到,还有  void不就是定义一个子程序吗?怎么还要定义?怎么定义
回复

使用道具 举报

ID:590194 发表于 2019-9-17 09:20 来自手机 | 显示全部楼层
还有  这个data<<1是什么意思
回复

使用道具 举报

ID:590194 发表于 2019-9-17 09:26 来自手机 | 显示全部楼层
还有  这个595控制输出的方式是二进制的对不对,就是01001010但是c里面怎么写,文中data=0×00不行啊
回复

使用道具 举报

ID:511501 发表于 2019-9-17 10:38 来自手机 | 显示全部楼层
sq8422779 发表于 2019-9-17 09:20
还有  这个data

将data中的1左移一位赋给data
回复

使用道具 举报

ID:590194 发表于 2019-9-18 08:44 | 显示全部楼层
#include<stc15fxxxx.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit Sh_cp=P5^4;
sbit Ds=P3^3;
sbit St=P3^2;
sbit zt=P3^0;
uchar temp;
uchar temp1;
void In_Data(void)
{
         unsigned char i;
         for(i=0;i<8;i++)
         {
          Sh_cp=0;
          _nop_();_nop_();
          temp=0;Ds=CY;
          Sh_cp=1;
          _nop_();_nop_();
          Sh_cp=0;
          _nop_();_nop_();
         }
}

void Out_Data(void)
{
         St=0;
//         _nop_();_nop_();
         St=1;                          //上升沿送到锁存器
        // _nop_();_nop_();
         St=0;            //锁存显示
}

void DelayMS(unsigned int ms)
{
        unsigned char i;
        while(ms--)
        for(i=0;i<120;i++);
}

void main()
{
        while(1)
        {
           DelayMS(1000);
            Sh_cp=0;
           temp<<=0;
           // Ds=CY;
            Sh_cp=1;
            Sh_cp=0;
                St=0;
                St=1;
                St=0;
         }
}

void main1()
{
   uchar i,j,p,u;
   p=0;
        while(1)
        {
        if(p==0){
                          for(i=0;i<8;i++)
                        {
                                temp=1<<i;
                                 In_Data();
                            Out_Data();
                                DelayMS(100);
                        }
        p=1;
        }
        if(zt==0){
                        for(i=0;i<8;i++)
                        {
                                temp=1<<i;
                                 In_Data();
                            Out_Data();
                            DelayMS(100);
                        }
                        }else{

               
                        }

                        //        DelayMS(2000);
                  
        }
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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