久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5040|回復: 5
打印 上一主題 下一主題
收起左側

為什么與p2_0有關的都無定義?

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg52.h>    //包含單片機寄存器的頭文件
#define uchar unsigned char       
sbit p2_0 = p2^0;
sbit p2_1 = p2^1;
sbit p2_2 = p2^2;
sbit p2_3 = p2^3;

#define uint unsigned int


uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/* 函數申明 -----------------------------------------------*/
void delay(uint z);

/* 變量定義 ----------------------------------------------*/
sbit key1=P3^5;
sbit key2=P3^4;
sbit key3=P3^3;
sbit key4=P3^2;




void display()
{
                   uchar m;
                for(m=9;m>0;m--)
                {
                        p0=table[m];
                        p2_0 =0;
                        delay(2000);
                        p2_0 = 1;
                }
                for(m=0;m<10;m++)
                {
                        p0=table[m];
                        p2_1=0;
                        delay(2000);
                        p2_1= 1;
                }
                for(m=9;m>0;m--)
                {
                        p0=table[m];
                        p2_2 = 0;
                        delay(2000);
                        p2_2 = 1;
                }
                for(m=0;m<10;m++)
                {
                        p0=table[m];
                        p2_3 = 0;
                        delay(2000);
                        p2_3 = 1;
                }
}

/*
********************************************************************************
** 函數名稱 : main(void)
** 函數功能 : 主函數
********************************************************************************
*/
void main(void)
{       
   unsigned int a;
         P0 = 0;
         for(a=100;a>0;a--)
          {
                  display();
          }
         while(1)                         //無限掃描
         {
                 if(key1==0)
                {
                        delay(5);          //消抖動
                        if(key1==0)          //確認按鍵被按下
                        {
                                while(!key1);//松手檢測
                                P1=0;
                                delay(200);
                                P1=0XFF;
                        }
          
                }
          

                if(key2==0)
                {
                        delay(5);          //消抖動
                        if(key2==0)          //確認按鍵被按下
                        {
                                while(!key2);//松手檢測
                            P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                        }
                }
                if(key3==0)
                {
                        delay(5);          //消抖動
                        if(key3==0)          //確認按鍵被按下
                        {
                                while(!key3);//松手檢測
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                        }
                }
                if(key4==0)
                {
                        delay(5);          //消抖動
                        if(key4==0)          //確認按鍵被按下
                        {
                                while(!key4);//松手檢測
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                        }
                }
                delay(10);       
        }
}

/*
********************************************************************************
** 函數名稱 : delay(uint z)
** 函數功能 : 延時函數
********************************************************************************
*/
void delay(uint z)
{                                                                                                                                                                                          
    uint i,j;
    for(i=z;i>0;i--)
        for(j=110;j>0;j--);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:258566 發表于 2018-1-23 18:04 | 只看該作者

大小寫問題
回復

使用道具 舉報

板凳
ID:213173 發表于 2018-1-23 18:08 | 只看該作者
字母大小寫錯誤
回復

使用道具 舉報

地板
ID:164602 發表于 2018-1-24 10:43 | 只看該作者
看來你是懂那個“REG52.H”頭文件的作用。
看看我翻譯的REG51.H的內容:
/*--------------------------------------------------------------------------
REG51.H

Header file for generic 80C51 and 80C31 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __REG51_H__
#define __REG51_H__

/*  BYTE Register  所有8位寄存器申明*/
sfr P0   = 0x80;//PO口寄存器
sfr P1   = 0x90;//P1口寄存器
sfr P2   = 0xA0;//P2口寄存器
sfr P3   = 0xB0;//P3口寄存器
sfr PSW  = 0xD0;//程序狀態寄存器
sfr ACC  = 0xE0;//累加器(ACC)
sfr B    = 0xF0;//寄存器B 主要用于乘、除等操作
sfr SP   = 0x81;//棧指針(SP)
sfr DPL  = 0x82;//數據指針(DPTR)是一個16 位的特殊功能寄存器,此為低8位
sfr DPH  = 0x83;//此為高8位
sfr PCON = 0x87;//程序計數器(PC)用于保存下一條要執行的指令的地址
sfr TCON = 0x88;//TCON 寄存囂的高4位為定時/計數器控制寄存器,低4位為控制外部中斷的中斷觸發方式選擇
sfr TMOD = 0x89;//TMOD 用于控制定時/計數器的工作方式及4 種工作模式
sfr TL0  = 0x8A;//8051 單片機內含有兩個16 位定時/計數囂,這是第一個定時/計數器賦初值的低位
sfr TL1  = 0x8B;//這是第二個定時/計數器賦初值的低位
sfr TH0  = 0x8C;//這是第一個定時/計數器賦初值的高位
sfr TH1  = 0x8D;//這是第二個定時/計數器賦初值的高位
sfr IE   = 0xA8;//IE 寄存器用于開放或屏蔽單片機的各個中斷源
sfr IP   = 0xB8;//通過設置IP 寄存器的相應位對各個中斷源的中斷優先級
sfr SCON = 0x98;//寄存器用于設置串行口的工作方式
sfr SBUF = 0x99;//串行數據緩沖器


/*  BIT Register  所有寄存器的位申明*/
/*  PSW   *///通過PSW 的各狀態位,可以實現程序跳轉、多字節運算等功能
sbit CY   = 0xD7;//進位標志位,表示在字節運算時發生進位或借位
sbit AC   = 0xD6;//輔助進位標志位,當ACC 低4 位發生進位時置位該標志位
sbit F0   = 0xD5;//通用標志位,由用戶定義
sbit RS1  = 0xD4;//工作寄存器組選擇位
sbit RS0  = 0xD3;
sbit OV   = 0xD2;//溢出標志位,表示運算時發生溢出
sbit P    = 0xD0;//奇偶校驗標志位

/*  TCON  *///
sbit TF1  = 0x8F;//定時器1中斷標志,定時到,計數滿,為溢出標志,進入中斷服務函數
sbit TR1  = 0x8E;//定時器1開關,1打開,0關閉
sbit TF0  = 0x8D;//定時器0中斷標志,定時到,計數滿,為溢出標志,進入中斷服務函數
sbit TR0  = 0x8C;//定時器0開關,1打開,0關閉
sbit IE1  = 0x8B;//外部中斷1中斷標志
sbit IT1  = 0x8A;//設置外部中斷1的觸發方式,0低電平觸發,1負跳變觸發
sbit IE0  = 0x89;//外部中斷0中斷標志
sbit IT0  = 0x88;//設置外部中斷0的觸發方式,0低電平觸發,1負跳變觸發

/*  IE   */
sbit EA   = 0xAF;//總中斷允許位
sbit ES   = 0xAC;//串行通訊口中斷允許位
sbit ET1  = 0xAB;//定時器1中斷允許位
sbit EX1  = 0xAA;//外部中斷1允許位
sbit ET0  = 0xA9;//定時器0中斷允許位
sbit EX0  = 0xA8;//外部中斷0允許位

/*  IP   */
sbit PS   = 0xBC;//串行通訊口中斷優先級設置
sbit PT1  = 0xBB;//定時器1中斷優先級設置
sbit PX1  = 0xBA;//外部中斷1優先級設置
sbit PT0  = 0xB9;//定時器0中斷優先級設置
sbit PX0  = 0xB8;//外部中斷0優先級設置

/*  P3  */
sbit RD   = 0xB7;//外部數據存貯器讀脈沖
sbit WR   = 0xB6;//外部數據存貯器寫脈沖
sbit T1   = 0xB5;//定時器1外部輸入口
sbit T0   = 0xB4;//定時器0外部輸入口
sbit INT1 = 0xB3;//外部中斷1輸入口
sbit INT0 = 0xB2;//外部中斷0輸入口
sbit TXD  = 0xB1;//串行輸出口
sbit RXD  = 0xB0;//串行輸入口

/*  SCON  *///寄存器用于設置串行口的工作方式和查詢接收、發送中斷產生標志
sbit SM0  = 0x9F;//串口通訊的工作方式
sbit SM1  = 0x9E;
sbit SM2  = 0x9D;//多機通訊控制位
sbit REN  = 0x9C;//串行通訊接收允許位
sbit TB8  = 0x9B;//用于存放發送的第9位數據
sbit RB8  = 0x9A;//用于存放接收到的第9位數據
sbit TI   = 0x99;//發送數據中斷標志位,發送結束,硬件置1,發中斷請求,要軟件復位,一般是在中斷服務程序中執行復位操作
sbit RI   = 0x98;//接收數據中斷標志位,接收結束,硬件置1,發中斷請求,要軟件復位,一般是在中斷服務程序中執行復位操作

#endif
這個頭文件定義了I/O口為P0、P1、P2、P3,都是大寫的P,你搞個小寫的,當然找不到了。
回復

使用道具 舉報

5#
ID:279341 發表于 2018-1-24 16:20 | 只看該作者
一般預定義的都是大寫的,C語言是大小寫敏感的!!!
回復

使用道具 舉報

6#
ID:279516 發表于 2018-1-25 10:09 | 只看該作者
大小寫出了問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情网站 | 亚洲综合一区二区三区 | 久久国产精品72免费观看 | 亚洲国产成人精品久久久国产成人一区 | 天天射天天干 | 91在线网站 | 亚洲欧洲一区二区 | 成人深夜福利在线观看 | 亚洲精品视频一区二区三区 | 色在线看 | 亚洲精品乱码久久久久久久久 | 国产成人免费视频 | 狠狠入ady亚洲精品经典电影 | 中文在线a在线 | 欧美成人一级 | 中文字幕欧美在线观看 | 国产亚洲精品精品国产亚洲综合 | 久久久久久综合 | 日韩av手机在线观看 | 天天干天天操 | 国产精品久久久久久一区二区三区 | 免费在线播放黄色 | 91精品国产高清一区二区三区 | 成人在线视频免费观看 | 久久久久亚洲 | 正在播放国产精品 | 国产亚洲精品久久久久久豆腐 | 色爱综合网 | 一区二区三区韩国 | 天天干天天爱天天 | 久草久 | 亚洲风情在线观看 | 国内精品一区二区三区 | 成人免费激情视频 | 91精品国产一区 | 综合在线视频 | 国产99久久精品一区二区永久免费 | 日韩精品一二三 | 亚洲第一福利网 | 国产玖玖 | 成人在线精品 |