关于C51中的CONST。。。(没用过单片机编程的不用解答了)到底系统分配内存了么,与define的区别。。 c51单片机编程中,怎么检测按键?
\u5728C51\u4e2d\u600e\u6837\u624d\u80fd\u907f\u514d\u7cfb\u7edf\u5206\u914d\u4f7f\u7528\u7531at\u5b9a\u4e49\u7684\u53d8\u91cf\u5185\u5b581\u3001\u5b9a\u4e49\u4e00\u4e2a\u5e38\u91cf\u4e00\u822c\u53ef\u7528EQU\u4f2a\u6307\u4ee4\u6765\u5b9e\u73b0 \u4e00\u822c\u4f7f\u7528\u683c\u5f0f\uff1a \u7b26\u53f7\u540d EQU \u8868\u8fbe\u5f0f \u5982\uff1a NUMBER EQU 200H ; \u7ed9\u7f13\u51b2\u533a\u7684\u957f\u5ea6\u53d6\u4e00\u4e2a\u7b26\u53f7\u540d STRING EQU \u201cMy Strings" LEN EQU NUMBER+22\u3001\u5b9a\u4e49\u53d8\u91cf \u6c47\u7f16\u8bed\u8a00\u5728\u6570\u636e\u6bb5\u4f7f\u7528\u6570\u636e\u5b9a\u4e49\u4f2a\u6307\u4ee4\u5b9a\u4e49\u53d8\u91cf\uff0c\u5bf9\u6570\u636e\u5b9a\u4e49\u4f2a\u6307\u4ee4\u8bf4\u660e\u5982\u4e0b\uff1a \uff081\uff09db\uff08(byte\uff0c\u5b57\u8282\uff0c\u4e00\u5b57\u8282\u5bbd\uff09 \uff082\uff09dw\uff08word\uff0c\u5b57\uff0c\u4e24\u5b57\u8282\u5bbd\uff09 \uff083\uff09dd\uff08double word\uff0c\u53cc\u5b57\uff0c\u56db\u5b57\u8282\u5bbd\uff09 \u793a\u4f8b\u5982\u4e0b\uff1a BUF0 DB 1 ;\u5b9a\u4e49\u4e00\u4e2a\u5b57\u8282\u578b\u53d8\u91cf\uff0c\u540d\u79f0\u662fBUF0\uff0c\u521d\u59cb\u503c\u662f1 BUF1 DB "2" ;\u5b9a\u4e49\u4e00\u4e2a\u5b57\u7b26\u578b\u53d8\u91cf\uff0c\u540d\u79f0\u662fBUF1\uff0c\u521d\u59cb\u503c\u662f"2" BUF2 DW 10H ;\u5b9a\u4e49\u4e00\u4e2a\u5b57\u578b\u53d8\u91cf\uff0c\u540d\u79f0\u662fBUF2\uff0c\u521d\u59cb\u503c\u662f10H3\u3001\u5206\u914d\u5185\u5b58 \u53ef\u5728\u5728\u524d\u9762\u5b9a\u4e49\u53d8\u91cf\u7684\u57fa\u7840\u4e0a\u5229\u7528DUP\u4f2a\u6307\u4ee4\u6765\u5206\u914d\u5185\u5b58 \u5982\uff1a MEM1 DW 5 DUP(20) ; \u5206\u914d20\u4e2a\u5b57\u957f\u5ea6\u7a7a\u95f4\uff0c\u6bcf\u4e2a\u5b57\u7684\u521d\u59cb\u5316\u4e3a5.
while (K1!=0)//K1\u6ca1\u6709\u88ab\u6309\u4e0b\u6267\u884c\u5faa\u73af{d1=0;d2=1;delay();d1=1;d2=0;delay();}
我编程的时候用const的地方用的不多一般如果要申明一个语句或者一个变量都用#define
你说的const我看到C++里面提到过
说到const是用来维护系统的稳定性的
防止你定义一个变量后在其他地方又被不小心修改了
相当于你定义的这个变量是一个只读的变量
我的理解是:const如果要用应该是用来定义程序代码段里面的内容
比方说你定义一个数码管的显示的数组可以用const
因为这个数组的内容只是用来调用的,不需要用来修改
const既然也是用来定义变量的,而且是定义只读变量的
当然在系统中要占用内存了
事实上,你在你的单片机的程序中加一个比方说:、
const int PI=3.14;
你编译后你的data的大小要加2.
而define是一个宏定义
应该是起到声明的作用
你用define声明一个语句
他不占据内存空间
不信你自己就试试。
个人理解,如果有误,请多多指教。
和标准的C没有什么区别,const只不过说这个指针或者存储空间的数据不能被写,只能读,一般加了const有点code的意思!
const一般也和你当前变量或者指针的存放空间有关系 比如说你用的data, pdata还是xdata空间,得要看你局的代码是怎么写的!
#define是一个macro其实就是一个preprocesser,引用的时候编译器会把它做替换处理。
C51里面const可能最多的就是来修饰外部地址 比如说你可以定义一个片外地址常数。
unsigned char *const WR_ADDR= 0x4000;
引用的时候就直接 WR_ADDR[offset] = ***;或者variable = WR_ADDR[offset]
绛旓細unsigned char b; //鍦C51 缂栫▼涓洜鍐呭瓨鏈夐檺灏藉彲鑳芥敞鎰忓彉閲忕被鍨嬬殑浣跨敤 //灏藉彲鑳戒娇鐢ㄥ皯瀛楄妭鐨勭被鍨,鍦ㄥぇ鍨嬬殑绋嬪簭涓緢 鍙楃敤 do{ for (b=0; b<32; b++) { for(a=0; a<30000; a++); //寤舵椂涓娈垫椂闂 P1 = design[b]; //璇诲凡瀹氫箟鐨勮姳鏍锋暟鎹苟鍐欒姳鏍锋暟鎹埌P1 鍙 } }while(1); } 绋嬪簭涓殑鑺辨牱...
绛旓細杩欑鎯呭喌鏄▼搴忚窇椋烇紝杩欐槸鍚勪腑鍗曠墖鏈鸿嚜韬喅瀹氱殑銆傛湁鐨勫崟鐗囨満绋嬪簭鍐呭鏋滄病鏈夊惊鐜▼搴忥紝閭e畠浼氫粠澶存墽琛屽埌鏈鍚庯紝鐒跺悗杩斿洖鏈寮濮嬬户缁墽琛屻備竴鐩撮噸澶嶃傝屾湁鐨勫崟鐗囨満鍐嶆墽琛屼竴娆′箣鍚庯紝灏变細鍋滄銆傛湁鐨勫垯鏄墽琛屽畬鍚庡彲鑳戒細杩涘叆鏃犲簭杩愯鐘舵侊紝灏卞彧涓嶇煡閬撶▼搴忚窇鍝噷鍘讳簡锛 鎵浠ワ紝鍦ㄥ啓鍗曠墖鏈虹▼搴忕殑鏃跺欙紝鏈濂芥槸鍔犱笂while...
绛旓細code鏄痥eil C51閲岄潰鐨鍏抽敭瀛楋紝涓鑸敤浜庡畾涔夊父閲忔暟缁勶紝鎰忔濇槸鍛婅瘔缂栬瘧璇存妸杩欎釜鏁扮粍鏀惧湪ROM瀛樺偍銆俢ode鐨勪綔鐢ㄦ槸鍛婅瘔鍗曠墖鏈猴紝瀹氫箟鐨勬暟鎹鏀惧湪ROM锛堢▼搴忓瓨鍌ㄥ尯锛夐噷闈紝鍐欏叆鍚庡氨涓嶈兘鍐嶆洿鏀广傚洜涓篊璇█涓病鍔炴硶璇︾粏鎻忚堪瀛樺叆鐨勬槸ROM杩樻槸RAM锛堝瘎瀛樺櫒锛夛紝鎵浠ュ湪杞欢涓坊鍔犱簡杩欎竴涓鍙ヨ捣鍒颁唬鏇挎眹缂栨寚浠ょ殑浣滅敤锛屽搴旂殑...
绛旓細鍗曠墖鏈C51鏁板瓧棰戠巼璁$▼搴/*** //澶存枃浠堕儴鍒,鏂囦欢鍚:plj.h /***...extern const uchar NoCur=1; //鏈夋樉绀烘棤鍏夋爣 extern const uchar CurNoFlash=2; //鏈夊厜鏍囦絾涓嶉棯鐑 extern const uchar CurFlash...if(xPos>=15) //濡傛灉XPOS涓殑鍊兼湭鍒15(鍙樉绀虹殑鏈澶氫綅) break; } } void SetCur(uchar ...
绛旓細C51涓嶅厑璁稿鏁扮粍鐨勫ぇ灏忎綔鍔ㄦ佸畾涔夛紝鍗虫暟缁勫ぇ灏忎笉渚濊禆浜庣▼搴忚繍琛屻傛暟缁勫垵濮嬪寲鐨勬椂鍊欙紝澶у皬蹇呴』宸插畾涔夌被鍨嬨傝繖涓湪C++鏍囧噯涓湁鎻忚堪銆俢onst鐨勫彉閲忎笉涓瀹氭槸宸插畾涔夌殑锛屽悜浣犱笂闈鐨刢onst int m=n;闇瑕佺湅n鏃跺欏湪缂栬瘧闃舵鏄惁鏄凡瀹氫箟鐨勩傛暟缁勪笅鏍囨渶濂戒笉瑕佺敤鏈煡鏁版嵁鐨勫彉閲忋
绛旓細include "reg52.h"const char code shu[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void main(void){ TMOD=0x11; TH0=0x3c; TL0=0xb0; ET0=1; TR0=1; EA=1; while(1) { ; }}dingshiqi1()interrupt 1{ static unsigned ...
绛旓細const char RAM ,ROM閮借
绛旓細Keil C51 鍩烘湰鍏抽敭瀛楋細涓銆佺敱ANSI鏍囧噯瀹氫箟鐨勫叡32涓:auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 浜屻並eil Cx51 鎵╁睍鐨勫叧閿瓧锛•...
绛旓細鏁扮粍A銆怤銆涓殑鍊煎簲璇ュ氨鏄瘂}涓殑绗琋涓笺備綘璇寸殑鎯呭喌,temp=5,BCD[5]=4銆
绛旓細鑷繁鍐欎竴浠 瀵逛竴缁存暟缁勭殑鎺掑簭瀹炰緥锛堜粠灏忓埌澶ф帓搴忥級锛歩nclude <stdio.h> include <stdlib.h> int comp( const void *a, const void * b){ return *(int *)a-*(int *)b;} int main(){ int *array;int n;scanf("%d",&n);array = (int *) malloc ( n * sizeof(int));int i ...