µ±Ç°Î»ÖãºÊ×Ò³ > µ¥Æ¬»úÔÀí¼°Ó¦Óà - »ùÓÚProteusºÍKeil CÁÖÁ¢°æ¿ÎºóϰÌâ´ð°¸
½á¹¹·Ç³£ÊìϤ²ÅÄܱà³Ì£¬²»±ãÓÚ±àд±È½Ï¸´ÔӵijÌÐò¡£ ¿É¸ù¾ÝÐèÒª¶ÔÒªÇóʱ¼äÐÔºÜÇ¿µÄ´úÂëÓûã±àÓïÑÔ±àд£¬ÆäËü²¿·ÖÓÃCÓïÑÔ±àд£¬Á½Õß»ìºÏ±à³Ì¾Í¿ÉÒÔʵÏÖÓÅÊÆ»¥²¹¡£
4£®Ö¸³öÏÂÃæ³ÌÐòµÄÓï·¨´íÎó£º #include
int a=7,C delay(10)
void delay();{ cgar i£»
for(i=O; i<=255; ¡±++¡±); } ´ð£º
#include
a=C£» //aºÍC±ØÐëÏȶ¨Òå²Å¿ÉʹÓà int a=7,C //ȱ·ÖºÅ£¬Ó¦¸ÃÌáÔÚʹÓÃǰ˵Ã÷
delay(10) //ÑÓʱ×Ó³ÌÐò±ØÐëÏȶ¨Ò壬»òÏÈÓк¯ÊýÔÐÍ˵Ã÷ void delay();{
//×÷Ϊº¯Êý¶¨Ò壬Óк¯Êý¶¨Òå²»ÄÜǶÌ×µÄÎÊÌ⣬
//¼´²»ÄÜÔÚÒ»¸öº¯ÊýÄÚ¶¨ÒåÁíÒ»¸öº¯Êý£¬¶øÇÒ¡°{¡±Ç°²»Ó¦ÓзֺÅ
//×÷Ϊº¯ÊýÔÐÍ˵Ã÷£¬Ó¦¸Ã·ÅÔÚº¯Êýµ÷ÓÃ֮ǰ,ÇÒÆäºó²»Ó¦¸Ã½Óº¯ÊýÌå
cgar i£» //×Ö·ûÐÍÓ¦¸ÃÊÇunsigned char for(i=O; i<=255; ¡±++¡±);// ¡±++¡±Ó¦¸Ä³Éi++
}
//Ö÷º¯ÊýûÓнáÊø£¬È±¡±}¡±
5£®¶¨Òå±äÁ¿a£¬b£¬c£¬ÆäÖÐaΪÄÚ²¿RAMµÄ¿ÉÎ»Ñ°Ö·ÇøµÄ×Ö·û±äÁ¿£¬bΪÍⲿÊý¾Ý´æ´¢Çø¸¡µãÐͱäÁ¿£¬cΪָÏò int ÐÍ xdata ÇøµÄÖ¸Õë¡£ ´ð£º char bdata a; float xdata b; int xdata *c; 6£®±à³Ì½«8051µÄÄÚ²¿Êý¾Ý´æ´¢Æ÷20Hµ¥ÔªºÍ35Hµ¥ÔªµÄÊý¾ÝÏà³Ë£¬½á¹û´æµ½ÍⲿÊý¾Ý´æ´¢Æ÷ÖÐ(ÈÎÒâλÖÃ)¡£
½â£º·½·¨Ò»£ºÓÃǶÈëʽ»ã±àÓïÑÔʵÏÖ #include
{ #pragma asm MOV A,20H MOV B,35H MUL AB
MOV DPTR,#1234H MOVX @DPTR,A INC DPTR MOV A,B
MOVX @DPTR,A #pragma endasm }
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ #include
unsigned int xdata x; unsigned char *ptr,a,b; ptr=0x25; a=*ptr; ptr=0x30; b=*ptr; x=a*b; }
7£®8051µÄƬÄÚÊý¾Ý´æ´¢Æ÷25Hµ¥ÔªÖдæ·ÅÓÐÒ»¸ö0¡«10µÄÕûÊý£¬±à³ÌÇóÆäƽ·½¸ù(¾«È·µ½5λÓÐЧÊý×Ö)£¬½«Æ½·½¸ù·Åµ½30Hµ¥ÔªÎªÊ×Ö·µÄÄÚ´æÖС£ ½â£º·½·¨Ò»£ºÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³ÌʵÏÖ //ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char a=0x25,c; float f;
c=getdata(a); f=sqrt(c); }
;Óûã±àÓïÑÔ±àдµÄÈ¡Êý¾Ý×Óº¯Êý£¬Ö»ÓÐÒ»¸öµØÖ·²ÎÊýÔÚR7ÖУ¬·µ»ØÖµÎªÖ¸¶¨µØÖ·µ¥ÔªÖеÄÄÚÈÝ£¬ÓÃR7·µ»ØÖ÷º¯Êý¡£ PUBLIC _GETDATA DE SEGMENT CODE RSEG DE
_GETDATA: MOV A,R7 ;È¡µØÖ·²ÎÊý MOV R0,A MOV A,@R0
MOV R7,A ;·µ»ØµØÖ·µ¥ÔªÖеÄÄÚÈÝ EXIT: RET END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
char n; char *ptr; float *ptr2; float f; ptr=0x25; n=*ptr; f=sqrt(n); ptr2=0x30; *ptr2=f; }
8£®½«ÍⲿRAM 10H¡«15Hµ¥ÔªµÄÄÚÈÝ´«Ë͵½ÄÚ²¿RAM 10H¡«15Hµ¥Ôª¡£ ½â£º·½·¨Ò»£º²ÉÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³Ì //ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char movdata(char,char); void main() {
char a=0x10,b=0x06; movdata(a,b); }
;Óûã±àÓïÑÔ±àдµÄÒÆ¶¯Êý¾Ý×Óº¯ÊýMOVDATA£¬ÆäÖеÚÒ»¸ö²ÎÊýÔÚR7ÖÐΪÊ×µØÖ·£¬µÚ¶þ¸ö²ÎÊýÔÚR5ÖÐΪ×Ö½ÚÊý PUBLIC _MOVDATA DE SEGMENT CODE RSEG DE
_MOVDATA: MOV A,R7 ;È¡²ÎÊý MOV R0,A LOOP: MOVX A,@R0 MOV @R0,A DJNZ R5,LOOP EXIT: RET END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
char n=6;
char *ptr1=0x10; char xdata *ptr2; ptr2=0x20; while(n--){
*ptr2++=*ptr1++; } }
9£®ÄÚ²¿RAM 20H¡¢21HºÍ22H¡¢23Hµ¥Ôª·Ö±ð´æ·Å×ÅÁ½¸öÎÞ·ûºÅµÄ16λÊý£¬½«ÆäÖеĴóÊýÖÃÓÚ24HºÍ25Hµ¥Ôª¡£ ½â£º·½·¨Ò»£º
#include
unsigned int *ptr; //ÉèÖÃÒ»¸öÄÚ²¿RAMÖ¸Õë unsigned int x,y,z;
ptr=0x20; //Ö¸Ïò0x20µ¥Ôª x=*ptr; //È¡µÚÒ»¸öÊý ptr=0x22; //Ö¸Ïò0x22µ¥Ôª y=*ptr; //È¡µÚ¶þ¸öÊý
z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz ptr=0x24; //Ö¸ÏòµØÖ·Îª0x24µÄÄ¿±êµ¥Ôª *ptr=z; //½«´óÊý´æÈëÄ¿±êµ¥Ôª }
·½·¨¶þ£º
#include
unsigned int x,y,z;
x=DBYTE[0X20]*256+DBYTE[0X21]; y=DBYTE[0X22]*256+DBYTE[0X23];
z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz DBYTE[0X24]=z/256; DBYTE[0X25]=z%6; }
·½·¨Èý£º
#include
unsigned int x _at_ 0x20; unsigned int y _at_ 0x22;
¹²·ÖÏí92ƪÏà¹ØÎĵµ