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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8224|回復: 14
收起左側

STC15W408AS單片機P5^4,P5^5編譯提示未定義

[復制鏈接]
ID:586438 發表于 2019-8-5 16:16 | 顯示全部樓層 |閱讀模式
我用的STC15W408AS單片機,C語音開頭#include <reg51.h>,需要用P5^4,P5^5兩個引腳角,編程完后,他說未定義,是怎么回事
捕獲1.PNG
捕獲.PNG
回復

使用道具 舉報

ID:377268 發表于 2019-8-5 22:04 | 顯示全部樓層
REG51.H中沒有^這個定義,你需要進行位定義  然后再用。
回復

使用道具 舉報

ID:377268 發表于 2019-8-5 22:05 | 顯示全部樓層
REG51.H中沒有^這個定義,你需要進行位定義  然后再用。  宏定義后面跟  sbit P5.5=P5^5; 賦值給 P5.5就行。
回復

使用道具 舉報

ID:213173 發表于 2019-8-6 06:37 | 顯示全部樓層
程序開頭聲明P5地址和P5.4,P5.5位定義。
#include <reg51.h>
sfr P5    =   0xC8;   
sbit P54  =   P5^4;
sbit P55  =   P5^5;
回復

使用道具 舉報

ID:10193 發表于 2019-8-6 06:57 | 顯示全部樓層
使用STC的頭文件
回復

使用道具 舉報

ID:511461 發表于 2019-8-6 09:00 | 顯示全部樓層
位定義
回復

使用道具 舉報

ID:586438 發表于 2019-8-6 09:18 | 顯示全部樓層
1105730718 發表于 2019-8-5 22:04
REG51.H中沒有^這個定義,你需要進行位定義  然后再用。

好的,謝謝
回復

使用道具 舉報

ID:586438 發表于 2019-8-6 09:18 | 顯示全部樓層
wulin 發表于 2019-8-6 06:37
程序開頭聲明P5地址和P5.4,P5.5位定義。
#include
sfr P5    =   0xC8;   

非常感謝!
回復

使用道具 舉報

ID:590652 發表于 2019-8-6 09:21 | 顯示全部樓層
你換個頭文件,換成和你單片機名一樣的頭文件,你單片機是16位的吧,STC的,你需要在STC-ISP里面下載頭文件,或者復制我下方頭文件也可以

STC15W與STC15F通用頭文件
#ifndef __STC15F2K60S2_H_
#define __STC15F2K60S2_H_

/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
//      高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
//相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
//        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////

/////////////////////////////////////////////////

//包含本頭文件后,不用另外再包含"REG51.H"

//內核特殊功能寄存器        // 復位值   描述
sfr ACC         =   0xE0;   //0000,0000 累加器Accumulator
sfr B           =   0xF0;   //0000,0000 B寄存器
sfr PSW         =   0xD0;   //0000,0000 程序狀態字
sbit CY         =   PSW^7;
sbit AC         =   PSW^6;
sbit F0         =   PSW^5;
sbit RS1        =   PSW^4;
sbit RS0        =   PSW^3;
sbit OV         =   PSW^2;
sbit P          =   PSW^0;
sfr SP          =   0x81;   //0000,0111 堆棧指針
sfr DPL         =   0x82;   //0000,0000 數據指針低字節
sfr DPH         =   0x83;   //0000,0000 數據指針高字節

//I/O 口特殊功能寄存器
sfr P0          =   0x80;   //1111,1111 端口0
sbit P00        =   P0^0;
sbit P01        =   P0^1;
sbit P02        =   P0^2;
sbit P03        =   P0^3;
sbit P04        =   P0^4;
sbit P05        =   P0^5;
sbit P06        =   P0^6;
sbit P07        =   P0^7;
sfr P1          =   0x90;   //1111,1111 端口1
sbit P10        =   P1^0;
sbit P11        =   P1^1;
sbit P12        =   P1^2;
sbit P13        =   P1^3;
sbit P14        =   P1^4;
sbit P15        =   P1^5;
sbit P16        =   P1^6;
sbit P17        =   P1^7;
sfr P2          =   0xA0;   //1111,1111 端口2
sbit P20        =   P2^0;
sbit P21        =   P2^1;
sbit P22        =   P2^2;
sbit P23        =   P2^3;
sbit P24        =   P2^4;
sbit P25        =   P2^5;
sbit P26        =   P2^6;
sbit P27        =   P2^7;
sfr P3          =   0xB0;   //1111,1111 端口3
sbit P30        =   P3^0;
sbit P31        =   P3^1;
sbit P32        =   P3^2;
sbit P33        =   P3^3;
sbit P34        =   P3^4;
sbit P35        =   P3^5;
sbit P36        =   P3^6;
sbit P37        =   P3^7;
sfr P4          =   0xC0;   //1111,1111 端口4
sbit P40        =   P4^0;
sbit P41        =   P4^1;
sbit P42        =   P4^2;
sbit P43        =   P4^3;
sbit P44        =   P4^4;
sbit P45        =   P4^5;
sbit P46        =   P4^6;
sbit P47        =   P4^7;
sfr P5          =   0xC8;   //xxxx,1111 端口5
sbit P50        =   P5^0;
sbit P51        =   P5^1;
sbit P52        =   P5^2;
sbit P53        =   P5^3;
sbit P54        =   P5^4;
sbit P55        =   P5^5;
sbit P56        =   P5^6;
sbit P57        =   P5^7;
sfr P6          =   0xE8;   //0000,0000 端口6
sbit P60        =   P6^0;
sbit P61        =   P6^1;
sbit P62        =   P6^2;
sbit P63        =   P6^3;
sbit P64        =   P6^4;
sbit P65        =   P6^5;
sbit P66        =   P6^6;
sbit P67        =   P6^7;
sfr P7          =   0xF8;   //0000,0000 端口7
sbit P70        =   P7^0;
sbit P71        =   P7^1;
sbit P72        =   P7^2;
sbit P73        =   P7^3;
sbit P74        =   P7^4;
sbit P75        =   P7^5;
sbit P76        =   P7^6;
sbit P77        =   P7^7;
sfr P0M0        =   0x94;   //0000,0000 端口0模式寄存器0
sfr P0M1        =   0x93;   //0000,0000 端口0模式寄存器1
sfr P1M0        =   0x92;   //0000,0000 端口1模式寄存器0
sfr P1M1        =   0x91;   //0000,0000 端口1模式寄存器1
sfr P2M0        =   0x96;   //0000,0000 端口2模式寄存器0
sfr P2M1        =   0x95;   //0000,0000 端口2模式寄存器1
sfr P3M0        =   0xB2;   //0000,0000 端口3模式寄存器0
sfr P3M1        =   0xB1;   //0000,0000 端口3模式寄存器1
sfr P4M0        =   0xB4;   //0000,0000 端口4模式寄存器0
sfr P4M1        =   0xB3;   //0000,0000 端口4模式寄存器1
sfr P5M0        =   0xCA;   //0000,0000 端口5模式寄存器0
sfr P5M1        =   0xC9;   //0000,0000 端口5模式寄存器1
sfr P6M0        =   0xCC;   //0000,0000 端口6模式寄存器0
sfr P6M1        =   0xCB;   //0000,0000 端口6模式寄存器1
sfr P7M0        =   0xE2;   //0000,0000 端口7模式寄存器0
sfr P7M1        =   0xE1;   //0000,0000 端口7模式寄存器1

//系統管理特殊功能寄存器
sfr PCON        =   0x87;   //0001,0000 電源控制寄存器
sfr AUXR        =   0x8E;   //0000,0000 輔助寄存器
sfr AUXR1       =   0xA2;   //0000,0000 輔助寄存器1
sfr P_SW1       =   0xA2;   //0000,0000 外設端口切換寄存器1
sfr CLK_DIV     =   0x97;   //0000,0000 時鐘分頻控制寄存器
sfr BUS_SPEED   =   0xA1;   //xx10,x011 總線速度控制寄存器
sfr P1ASF       =   0x9D;   //0000,0000 端口1模擬功能配置寄存器
sfr P_SW2       =   0xBA;   //0xxx,x000 外設端口切換寄存器

//中斷特殊功能寄存器
sfr IE          =   0xA8;   //0000,0000 中斷控制寄存器
sbit EA         =   IE^7;
sbit ELVD       =   IE^6;
sbit EADC       =   IE^5;
sbit ES         =   IE^4;
sbit ET1        =   IE^3;
sbit EX1        =   IE^2;
sbit ET0        =   IE^1;
sbit EX0        =   IE^0;
sfr IP          =   0xB8;   //0000,0000 中斷優先級寄存器
sbit PPCA       =   IP^7;
sbit PLVD       =   IP^6;
sbit PADC       =   IP^5;
sbit PS         =   IP^4;
sbit PT1        =   IP^3;
sbit PX1        =   IP^2;
sbit PT0        =   IP^1;
sbit PX0        =   IP^0;
sfr IE2         =   0xAF;   //0000,0000 中斷控制寄存器2
sfr IP2         =   0xB5;   //xxxx,xx00 中斷優先級寄存器2
sfr INT_CLKO    =   0x8F;   //0000,0000 外部中斷與時鐘輸出控制寄存器

//定時器特殊功能寄存器
sfr TCON        =   0x88;   //0000,0000 T0/T1控制寄存器
sbit TF1        =   TCON^7;
sbit TR1        =   TCON^6;
sbit TF0        =   TCON^5;
sbit TR0        =   TCON^4;
sbit IE1        =   TCON^3;
sbit IT1        =   TCON^2;
sbit IE0        =   TCON^1;
sbit IT0        =   TCON^0;
sfr TMOD        =   0x89;   //0000,0000 T0/T1模式寄存器
sfr TL0         =   0x8A;   //0000,0000 T0低字節
sfr TL1         =   0x8B;   //0000,0000 T1低字節
sfr TH0         =   0x8C;   //0000,0000 T0高字節
sfr TH1         =   0x8D;   //0000,0000 T1高字節
sfr T4T3M       =   0xD1;   //0000,0000 T3/T4模式寄存器
sfr T3T4M       =   0xD1;   //0000,0000 T3/T4模式寄存器
sfr T4H         =   0xD2;   //0000,0000 T4高字節
sfr T4L         =   0xD3;   //0000,0000 T4低字節
sfr T3H         =   0xD4;   //0000,0000 T3高字節
sfr T3L         =   0xD5;   //0000,0000 T3低字節
sfr T2H         =   0xD6;   //0000,0000 T2高字節
sfr T2L         =   0xD7;   //0000,0000 T2低字節
sfr WKTCL       =   0xAA;   //0000,0000 掉電喚醒定時器低字節
sfr WKTCH       =   0xAB;   //0000,0000 掉電喚醒定時器高字節
sfr WDT_CONTR   =   0xC1;   //0000,0000 看門狗控制寄存器

//串行口特殊功能寄存器
sfr SCON        =   0x98;   //0000,0000 串口1控制寄存器
sbit SM0        =   SCON^7;
sbit SM1        =   SCON^6;
sbit SM2        =   SCON^5;
sbit REN        =   SCON^4;
sbit TB8        =   SCON^3;
sbit RB8        =   SCON^2;
sbit TI         =   SCON^1;
sbit RI         =   SCON^0;
sfr SBUF        =   0x99;   //xxxx,xxxx 串口1數據寄存器
sfr S2CON       =   0x9A;   //0000,0000 串口2控制寄存器
sfr S2BUF       =   0x9B;   //xxxx,xxxx 串口2數據寄存器
sfr S3CON       =   0xAC;   //0000,0000 串口3控制寄存器
sfr S3BUF       =   0xAD;   //xxxx,xxxx 串口3數據寄存器
sfr S4CON       =   0x84;   //0000,0000 串口4控制寄存器
sfr S4BUF       =   0x85;   //xxxx,xxxx 串口4數據寄存器
sfr SADDR       =   0xA9;   //0000,0000 從機地址寄存器
sfr SADEN       =   0xB9;   //0000,0000 從機地址屏蔽寄存器

//ADC 特殊功能寄存器
sfr ADC_CONTR   =   0xBC;   //0000,0000 A/D轉換控制寄存器
sfr ADC_RES     =   0xBD;   //0000,0000 A/D轉換結果高8位
sfr ADC_RESL    =   0xBE;   //0000,0000 A/D轉換結果低2位

//SPI 特殊功能寄存器
sfr SPSTAT      =   0xCD;   //00xx,xxxx SPI狀態寄存器
sfr SPCTL       =   0xCE;   //0000,0100 SPI控制寄存器
sfr SPDAT       =   0xCF;   //0000,0000 SPI數據寄存器

//IAP/ISP 特殊功能寄存器
sfr IAP_DATA    =   0xC2;   //0000,0000 EEPROM數據寄存器
sfr IAP_ADDRH   =   0xC3;   //0000,0000 EEPROM地址高字節
sfr IAP_ADDRL   =   0xC4;   //0000,0000 EEPROM地址第字節
sfr IAP_CMD     =   0xC5;   //xxxx,xx00 EEPROM命令寄存器
sfr IAP_TRIG    =   0xC6;   //0000,0000 EEPRPM命令觸發寄存器
sfr IAP_CONTR   =   0xC7;   //0000,x000 EEPROM控制寄存器

//PCA/PWM 特殊功能寄存器
sfr CCON        =   0xD8;   //00xx,xx00 PCA控制寄存器
sbit CF         =   CCON^7;
sbit CR         =   CCON^6;
sbit CCF2       =   CCON^2;
sbit CCF1       =   CCON^1;
sbit CCF0       =   CCON^0;
sfr CMOD        =   0xD9;   //0xxx,x000 PCA 工作模式寄存器
sfr CL          =   0xE9;   //0000,0000 PCA計數器低字節
sfr CH          =   0xF9;   //0000,0000 PCA計數器高字節
sfr CCAPM0      =   0xDA;   //0000,0000 PCA模塊0的PWM寄存器
sfr CCAPM1      =   0xDB;   //0000,0000 PCA模塊1的PWM寄存器
sfr CCAPM2      =   0xDC;   //0000,0000 PCA模塊2的PWM 寄存器
sfr CCAP0L      =   0xEA;   //0000,0000 PCA模塊0的捕捉/比較寄存器低字節
sfr CCAP1L      =   0xEB;   //0000,0000 PCA模塊1的捕捉/比較寄存器低字節
sfr CCAP2L      =   0xEC;   //0000,0000 PCA模塊2的捕捉/比較寄存器低字節
sfr PCA_PWM0    =   0xF2;   //xxxx,xx00 PCA模塊0的PWM寄存器
sfr PCA_PWM1    =   0xF3;   //xxxx,xx00 PCA模塊1的PWM寄存器
sfr PCA_PWM2    =   0xF4;   //xxxx,xx00 PCA模塊1的PWM寄存器
sfr CCAP0H      =   0xFA;   //0000,0000 PCA模塊0的捕捉/比較寄存器高字節
sfr CCAP1H      =   0xFB;   //0000,0000 PCA模塊1的捕捉/比較寄存器高字節
sfr CCAP2H      =   0xFC;   //0000,0000 PCA模塊2的捕捉/比較寄存器高字節

//比較器特殊功能寄存器
sfr CMPCR1      =   0xE6;   //0000,0000 比較器控制寄存器1
sfr CMPCR2      =   0xE7;   //0000,0000 比較器控制寄存器2

//增強型PWM波形發生器特殊功能寄存器
sfr PWMCFG      =   0xf1;   //x000,0000 PWM配置寄存器
sfr PWMCR       =   0xf5;   //0000,0000 PWM控制寄存器
sfr PWMIF       =   0xf6;   //x000,0000 PWM中斷標志寄存器
sfr PWMFDCR     =   0xf7;   //xx00,0000 PWM外部異常檢測控制寄存器

//如下特殊功能寄存器位于擴展RAM區域
//訪問這些寄存器,需先將P_SW2的BIT7設置為1,才可正常讀寫
#define PWMC        (*(unsigned int  volatile xdata *)0xfff0)
#define PWMCH       (*(unsigned char volatile xdata *)0xfff0)
#define PWMCL       (*(unsigned char volatile xdata *)0xfff1)
#define PWMCKS      (*(unsigned char volatile xdata *)0xfff2)
#define PWM2T1      (*(unsigned int  volatile xdata *)0xff00)
#define PWM2T1H     (*(unsigned char volatile xdata *)0xff00)
#define PWM2T1L     (*(unsigned char volatile xdata *)0xff01)
#define PWM2T2      (*(unsigned int  volatile xdata *)0xff02)
#define PWM2T2H     (*(unsigned char volatile xdata *)0xff02)
#define PWM2T2L     (*(unsigned char volatile xdata *)0xff03)
#define PWM2CR      (*(unsigned char volatile xdata *)0xff04)
#define PWM3T1      (*(unsigned int  volatile xdata *)0xff10)
#define PWM3T1H     (*(unsigned char volatile xdata *)0xff10)
#define PWM3T1L     (*(unsigned char volatile xdata *)0xff11)
#define PWM3T2      (*(unsigned int  volatile xdata *)0xff12)
#define PWM3T2H     (*(unsigned char volatile xdata *)0xff12)
#define PWM3T2L     (*(unsigned char volatile xdata *)0xff13)
#define PWM3CR      (*(unsigned char volatile xdata *)0xff14)
#define PWM4T1      (*(unsigned int  volatile xdata *)0xff20)
#define PWM4T1H     (*(unsigned char volatile xdata *)0xff20)
#define PWM4T1L     (*(unsigned char volatile xdata *)0xff21)
#define PWM4T2      (*(unsigned int  volatile xdata *)0xff22)
#define PWM4T2H     (*(unsigned char volatile xdata *)0xff22)
#define PWM4T2L     (*(unsigned char volatile xdata *)0xff23)
#define PWM4CR      (*(unsigned char volatile xdata *)0xff24)
#define PWM5T1      (*(unsigned int  volatile xdata *)0xff30)
#define PWM5T1H     (*(unsigned char volatile xdata *)0xff30)
#define PWM5T1L     (*(unsigned char volatile xdata *)0xff31)
#define PWM5T2      (*(unsigned int  volatile xdata *)0xff32)
#define PWM5T2H     (*(unsigned char volatile xdata *)0xff32)
#define PWM5T2L     (*(unsigned char volatile xdata *)0xff33)
#define PWM5CR      (*(unsigned char volatile xdata *)0xff34)
#define PWM6T1      (*(unsigned int  volatile xdata *)0xff40)
#define PWM6T1H     (*(unsigned char volatile xdata *)0xff40)
#define PWM6T1L     (*(unsigned char volatile xdata *)0xff41)
#define PWM6T2      (*(unsigned int  volatile xdata *)0xff42)
#define PWM6T2H     (*(unsigned char volatile xdata *)0xff42)
#define PWM6T2L     (*(unsigned char volatile xdata *)0xff43)
#define PWM6CR      (*(unsigned char volatile xdata *)0xff44)
#define PWM7T1      (*(unsigned int  volatile xdata *)0xff50)        
#define PWM7T1H     (*(unsigned char volatile xdata *)0xff50)        
#define PWM7T1L     (*(unsigned char volatile xdata *)0xff51)
#define PWM7T2      (*(unsigned int  volatile xdata *)0xff52)
#define PWM7T2H     (*(unsigned char volatile xdata *)0xff52)
#define PWM7T2L     (*(unsigned char volatile xdata *)0xff53)
#define PWM7CR      (*(unsigned char volatile xdata *)0xff54)

/////////////////////////////////////////////////

#endif

回復

使用道具 舉報

ID:344572 發表于 2019-8-6 09:27 | 顯示全部樓層
REG51.H中沒有進行未定義,如:sbit  p2.6=p2^6
回復

使用道具 舉報

ID:586438 發表于 2019-8-6 11:21 | 顯示全部樓層
CENTRE 發表于 2019-8-6 09:21
你換個頭文件,換成和你單片機名一樣的頭文件,你單片機是16位的吧,STC的,你需要在STC-ISP里面下載頭文件 ...

我位定義了一下  問題已經解決了,你這個我可以好好學習一下,非常感謝
回復

使用道具 舉報

ID:586438 發表于 2019-8-6 11:23 | 顯示全部樓層
CENTRE 發表于 2019-8-6 09:21
你換個頭文件,換成和你單片機名一樣的頭文件,你單片機是16位的吧,STC的,你需要在STC-ISP里面下載頭文件 ...

我用的單片機是15w408as
回復

使用道具 舉報

ID:36359 發表于 2020-2-11 21:32 | 顯示全部樓層
為什么不加入STC15的頭文件呢
回復

使用道具 舉報

ID:673920 發表于 2022-10-24 22:06 | 顯示全部樓層
wulin 發表于 2019-8-6 06:37
程序開頭聲明P5地址和P5.4,P5.5位定義。
#include
sfr P5    =   0xC8;   

STC15W204S同樣的現象,使用P5就報錯!!!!.用您的方法,就輕松搞定!謝謝!
回復

使用道具 舉報

ID:1034262 發表于 2022-10-25 11:42 | 顯示全部樓層
自己定義一下,或者使用STC公司的頭文件。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区在线视频 | 精品国产乱码久久久久久闺蜜 | www久| 国内成人免费视频 | 99re视频在线 | 激情久久网 | 亚洲精品在线观看网站 | 视频一区在线 | 一级免费毛片 | 欧美激情在线观看一区二区三区 | 一区二区视频在线 | 在线不卡av | 精国产品一区二区三区四季综 | www.亚洲| 日日干日日操 | 中文字幕视频在线观看 | 欧美精品一区三区 | 亚洲精品免费观看 | 欧美视频在线一区 | 欧美精品一区在线发布 | 国产在线小视频 | 波多野结衣精品 | 久久精品这里 | 国产精品久久久久久久久久久久 | 欧美日韩久 | 久久最新| 日韩欧美三级电影在线观看 | 国产精品乱码一区二区三区 | 国产高清精品一区二区三区 | 北条麻妃av一区二区三区 | 在线亚洲欧美 | 国产真实乱对白精彩久久小说 | 中文字幕一区在线观看视频 | 在线观看精品视频网站 | 欧美福利在线 | 国产乱码精品一区二区三区五月婷 | 久久综合影院 | 在线一区 | 自拍偷拍一区二区三区 | 欧美精品乱码久久久久久按摩 | 18性欧美|