找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 869|回复: 4
打印 上一主题 下一主题
收起左侧

请问一下我这个C语言程序,这里的指针错了吗?怎么这样?

[复制链接]
跳转到指定楼层
楼主
ID:847202 发表于 2020-12-8 19:44 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

#include<reg51.h>
sbit s1 = P3^2;
sbit s2 = P3^3;
void delay(unsigned int n)
{
        while(n--);
}
void yanshi(unsigned char a)
{
        unsigned char b;
        for(b = 0;b<a;b++)
        {
                TH0 =(65536 - 50000)/256;
                TL0 = (65536 - 50000)%256;
                TR0 = 1;
                while(!TF0);
                TF0 = 0;
        }
}
void zuo()
{
        unsigned char c = 0x01;
        unsigned char *h;
        unsigned char f;
        h = &c;
        for(f = 0;f<8;f++)
        {
                P1 = ~c;
                delay(20000);
                *c = *c<<1;
                if(c == 0)
                {
                        c = 0x01;
                }
        }
}
void you()
{
        unsigned char e = 0x80;
        unsigned char *p;
        unsigned char b;
        p = &e;
        for(b = 0;b<8;b++)
        {
                P1 = ~e;
                yanshi(4);
                *e = *e>>1;
                if(e ==0x00)
                {
                        e = 0x80;
                }
        }
}        
void main()
{
        TMOD = 0x01;
        EX0 = 1;
        IT0 = 1;
        PX0 = 1;
        EX1 = 1;
        IT1 = 0;
        EA = 1;
        
        while(1)
        {
                zuo();
        }
}
void zd()interrupt 0
{
        unsigned char j;
        j = P1;
        you();
        P1 = j;
}
void zhongduan() interrupt 2
{
        unsigned char j,i;
        j = P1;
        for( i = 0; i<3;i++)
        {  
                P1 = 0x00;
                yanshi(10);
                P1 = 0xff;
                yanshi(10);
        }
        while(!s2);
        P1 = j;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:764088 发表于 2020-12-9 08:39 | 只看该作者
unsigned char c = 0x01;//c 是字符,不是指针
unsigned char *h; //h
h = &c; // h是指针,将字符 地址赋给指针是可以的
*c = *c<<1; //c 不是指针, 改为 :*h = (*h) << 1; 是可以的
回复

使用道具 举报

板凳
ID:833190 发表于 2020-12-9 15:25 | 只看该作者
定义了指针h,但是后面没有用到这程序也用不到指针,直接对变量c进行操作就行,把*c=*c<<1改成
c=c<<1。如果是想练一下指针,那就改成*h=*h<<1。
回复

使用道具 举报

地板
ID:517466 发表于 2020-12-10 10:43 | 只看该作者
非指针变量,变量里面装的是值
指针变量,里面装的地址
uchar c=1 : 表示c这个单元里装的是uchar数据。&c 表示获得c这个单元所在的地址。
uchar *c  :表示c这个单元里装是一个地址,这个地址里装的是一个uchar数据。*c就是取得这个uchar数据;而直接使用c,得到的是一个地址;
回复

使用道具 举报

5#
ID:858214 发表于 2020-12-10 16:59 | 只看该作者
改成*h=*h<<1
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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