欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 為什么與p2_0有關的都無定義? [打印本頁]

作者: 1lgy    時間: 2018-1-23 17:25
標題: 為什么與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--);
}
作者: cccc888    時間: 2018-1-23 18:04

大小寫問題

作者: wulin    時間: 2018-1-23 18:08
字母大小寫錯誤
作者: HC6800-ES-V2.0    時間: 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,你搞個小寫的,當然找不到了。
作者: slcands    時間: 2018-1-24 16:20
一般預定義的都是大寫的,C語言是大小寫敏感的。!
作者: 2924958047    時間: 2018-1-25 10:09
大小寫出了問題




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1