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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5149|回復(fù): 5
收起左側(cè)

為什么與p2_0有關(guān)的都無(wú)定義?

[復(fù)制鏈接]
ID:279020 發(fā)表于 2018-1-23 17:25 | 顯示全部樓層 |閱讀模式
#include<reg52.h>    //包含單片機(jī)寄存器的頭文件
#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};
/* 函數(shù)申明 -----------------------------------------------*/
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;
                }
}

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

                if(key2==0)
                {
                        delay(5);          //消抖動(dòng)
                        if(key2==0)          //確認(rèn)按鍵被按下
                        {
                                while(!key2);//松手檢測(cè)
                            P1=0;
                                delay(200);
                                P1=0XFF;
                                delay(200);
                                P1=0;
                                delay(200);
                                P1=0XFF;
                        }
                }
                if(key3==0)
                {
                        delay(5);          //消抖動(dòng)
                        if(key3==0)          //確認(rèn)按鍵被按下
                        {
                                while(!key3);//松手檢測(cè)
                                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);          //消抖動(dòng)
                        if(key4==0)          //確認(rèn)按鍵被按下
                        {
                                while(!key4);//松手檢測(cè)
                                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);       
        }
}

/*
********************************************************************************
** 函數(shù)名稱 : delay(uint z)
** 函數(shù)功能 : 延時(shí)函數(shù)
********************************************************************************
*/
void delay(uint z)
{                                                                                                                                                                                          
    uint i,j;
    for(i=z;i>0;i--)
        for(j=110;j>0;j--);
}
回復(fù)

使用道具 舉報(bào)

ID:258566 發(fā)表于 2018-1-23 18:04 | 顯示全部樓層
捕獲.PNG
大小寫(xiě)問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-1-23 18:08 | 顯示全部樓層
字母大小寫(xiě)錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-1-24 10:43 | 顯示全部樓層
看來(lái)你是懂那個(gè)“REG52.H”頭文件的作用。
看看我翻譯的REG51.H的內(nèi)容:
/*--------------------------------------------------------------------------
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;//程序狀態(tài)寄存器
sfr ACC  = 0xE0;//累加器(ACC)
sfr B    = 0xF0;//寄存器B 主要用于乘、除等操作
sfr SP   = 0x81;//棧指針(SP)
sfr DPL  = 0x82;//數(shù)據(jù)指針(DPTR)是一個(gè)16 位的特殊功能寄存器,此為低8位
sfr DPH  = 0x83;//此為高8位
sfr PCON = 0x87;//程序計(jì)數(shù)器(PC)用于保存下一條要執(zhí)行的指令的地址
sfr TCON = 0x88;//TCON 寄存囂的高4位為定時(shí)/計(jì)數(shù)器控制寄存器,低4位為控制外部中斷的中斷觸發(fā)方式選擇
sfr TMOD = 0x89;//TMOD 用于控制定時(shí)/計(jì)數(shù)器的工作方式及4 種工作模式
sfr TL0  = 0x8A;//8051 單片機(jī)內(nèi)含有兩個(gè)16 位定時(shí)/計(jì)數(shù)囂,這是第一個(gè)定時(shí)/計(jì)數(shù)器賦初值的低位
sfr TL1  = 0x8B;//這是第二個(gè)定時(shí)/計(jì)數(shù)器賦初值的低位
sfr TH0  = 0x8C;//這是第一個(gè)定時(shí)/計(jì)數(shù)器賦初值的高位
sfr TH1  = 0x8D;//這是第二個(gè)定時(shí)/計(jì)數(shù)器賦初值的高位
sfr IE   = 0xA8;//IE 寄存器用于開(kāi)放或屏蔽單片機(jī)的各個(gè)中斷源
sfr IP   = 0xB8;//通過(guò)設(shè)置IP 寄存器的相應(yīng)位對(duì)各個(gè)中斷源的中斷優(yōu)先級(jí)
sfr SCON = 0x98;//寄存器用于設(shè)置串行口的工作方式
sfr SBUF = 0x99;//串行數(shù)據(jù)緩沖器


/*  BIT Register  所有寄存器的位申明*/
/*  PSW   *///通過(guò)PSW 的各狀態(tài)位,可以實(shí)現(xiàn)程序跳轉(zhuǎn)、多字節(jié)運(yùn)算等功能
sbit CY   = 0xD7;//進(jìn)位標(biāo)志位,表示在字節(jié)運(yùn)算時(shí)發(fā)生進(jìn)位或借位
sbit AC   = 0xD6;//輔助進(jìn)位標(biāo)志位,當(dāng)ACC 低4 位發(fā)生進(jìn)位時(shí)置位該標(biāo)志位
sbit F0   = 0xD5;//通用標(biāo)志位,由用戶定義
sbit RS1  = 0xD4;//工作寄存器組選擇位
sbit RS0  = 0xD3;
sbit OV   = 0xD2;//溢出標(biāo)志位,表示運(yùn)算時(shí)發(fā)生溢出
sbit P    = 0xD0;//奇偶校驗(yàn)標(biāo)志位

/*  TCON  *///
sbit TF1  = 0x8F;//定時(shí)器1中斷標(biāo)志,定時(shí)到,計(jì)數(shù)滿,為溢出標(biāo)志,進(jìn)入中斷服務(wù)函數(shù)
sbit TR1  = 0x8E;//定時(shí)器1開(kāi)關(guān),1打開(kāi),0關(guān)閉
sbit TF0  = 0x8D;//定時(shí)器0中斷標(biāo)志,定時(shí)到,計(jì)數(shù)滿,為溢出標(biāo)志,進(jìn)入中斷服務(wù)函數(shù)
sbit TR0  = 0x8C;//定時(shí)器0開(kāi)關(guān),1打開(kāi),0關(guān)閉
sbit IE1  = 0x8B;//外部中斷1中斷標(biāo)志
sbit IT1  = 0x8A;//設(shè)置外部中斷1的觸發(fā)方式,0低電平觸發(fā),1負(fù)跳變觸發(fā)
sbit IE0  = 0x89;//外部中斷0中斷標(biāo)志
sbit IT0  = 0x88;//設(shè)置外部中斷0的觸發(fā)方式,0低電平觸發(fā),1負(fù)跳變觸發(fā)

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

/*  IP   */
sbit PS   = 0xBC;//串行通訊口中斷優(yōu)先級(jí)設(shè)置
sbit PT1  = 0xBB;//定時(shí)器1中斷優(yōu)先級(jí)設(shè)置
sbit PX1  = 0xBA;//外部中斷1優(yōu)先級(jí)設(shè)置
sbit PT0  = 0xB9;//定時(shí)器0中斷優(yōu)先級(jí)設(shè)置
sbit PX0  = 0xB8;//外部中斷0優(yōu)先級(jí)設(shè)置

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

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

#endif
這個(gè)頭文件定義了I/O口為P0、P1、P2、P3,都是大寫(xiě)的P,你搞個(gè)小寫(xiě)的,當(dāng)然找不到了。
回復(fù)

使用道具 舉報(bào)

ID:279341 發(fā)表于 2018-1-24 16:20 | 顯示全部樓層
一般預(yù)定義的都是大寫(xiě)的,C語(yǔ)言是大小寫(xiě)敏感的!!
回復(fù)

使用道具 舉報(bào)

ID:279516 發(fā)表于 2018-1-25 10:09 | 顯示全部樓層
大小寫(xiě)出了問(wèn)題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美少妇 | 成人教育av | 韩国久久 | 久久毛片网站 | 黑人性hd| 国产精品永久久久久久久www | 成人午夜毛片 | 免费观看成人av | 中文字幕成人在线 | 亚洲欧美成人影院 | 日韩欧美一级精品久久 | 伊人网站在线观看 | 国产精品毛片一区二区三区 | com.色.www在线观看 | 精品欧美一区二区三区免费观看 | 插插插干干干 | 色av一区二区| 一区视频 | 色吊丝在线| 91久久电影 | 国产免费一区 | 日韩色在线 | 国产伦精品一区二区三区高清 | 欧美大片黄| 国产精品爱久久久久久久 | 日韩三级电影在线看 | 亚洲国产精品第一区二区 | 国产成人在线观看免费 | 亚洲欧美一区二区三区视频 | 亚洲高清视频一区二区 | 玖玖国产精品视频 | 搞黄网站在线观看 | 日韩一及片 | 日韩欧美在线一区二区 | 成人精品免费 | 九九导航 | 亚洲一区国产 | 精品99在线| 欧美日批 | 国产亚洲欧美在线 | 亚洲第一中文字幕 |