8051单片机的程序,为什么答案是这个,分析过程? 51单片机的问题,求大神解答。为什么8051单片机的片内程序...

\u9ad8\u4eba\u5e2e\u6211\u89e3\u6790\u4e0b\u8fd9\u4e2a8051\u5355\u7247\u673a\u7a0b\u5e8f

ORG 0000H ;\u8d77\u59cb\u5730\u5740
LJMP MAIN
ORG 000BH ;\u4e2d\u65ad\u5730\u5740
LJMP CLOCK
ORG 0050H
MAIN: MOV R7,#14H ;\u5bc4\u5b58\u5668R7\u8f7d\u516520
MOV 27H,#00H
MOV 28H,#00H
MOV 29H,#00H ;27H 28H 29H \u4e09\u4e2a\u5bc4\u5b58\u5668\u521d\u59cb\u5316\uff0c\u5373\u79d2\uff0c\u5206\uff0c\u65f6
MOV TMOD,#01H ;Timer0 \u9009\u4f5c\u5b9a\u65f6\u5668\uff0c\u9009\u7528\u5de5\u4f5c\u6a21\u5f0f1
MOV TL0,#0B0H
MOV TH0,#3CH ;\u5f80Timer0\u5bc4\u5b58\u5668\u4e2d\u8f7d\u5165\u8ba1\u6570\u521d\u503c3CB0H\uff0c\u5373\u5b9a\u65f6\u65f6\u95f4\u4e3a50000us
ORL IE,#87H ;\u5f00\u542f\u5916\u90e8\u4e2d\u65ad0\uff0c\u5916\u90e8\u4e2d\u65ad1 \u548c Timer0\u4e2d\u65ad
SETB TR0 ;\u5f00\u542fTIMER0
WAIT:
LCALL DZSPLAY ;\u8c03\u7528\u663e\u793a\u5b50\u7a0b\u5e8f
LJMP WAIT
CLOCK: DJNZ R7,NEXT ;R7\u81ea\u51cf\uff0c\u4e0d\u4e3a0\u5219\u8df3\u8f6cNEXT
INC 27H ;R7\u51cf\u523020\u6b21 \u5373\u8ba1\u65f6\u4e00\u79d2\u540e27H\u52a01
MOV R7,#14H
MOV A, 27H ;27H\u7684\u503c\u8f7d\u5165\u7d2f\u52a0\u5668
CJNE A,#60,EXIT ;\u7d2f\u52a0\u5668A\u4e0d\u523060\u8df3\u8f6cEXIT
MOV 27H,#00H ;
INC 28H ;\u7d2f\u52a0\u5668A\u8ba1\u6570\u523060\uff0c28H\u52a01\uff0c27H\u6e05\u96f6
MOV A,#28H
CJNE A,#60,EXIT
MOV 28H,#00H ;\u7d2f\u52a0\u5668A\u8ba1\u6570\u523060\uff0c29H\u52a01\uff0c28H\u6e05\u96f6
INC 29H
MOV A,29H
CJNE A,#24,EXIT ;\u7d2f\u52a0\u5668A\u8ba1\u6570\u523024\uff0c27H 28H 29H\u6e05\u96f6
MOV 29H ,#00H
MOV 28H,#00H
MOV 27H,#00H
EXIT:RETI ;\u8fd4\u56de

NEXT:
MOV TH0,#3CH
MOV TL0,#0B0H ;\u91cd\u65b0\u7ed9\u8ba1\u6570\u5668\u5bc4\u5b58\u5668\u8f7d\u5165\u521d\u503c
RETI


DZSPLAY:
MOV A,27H ;\u663e\u793a\u5b50\u7a0b\u5e8f\uff0c\u663e\u793a\u79d2\uff0c\u5206\uff0c\u65f6
MOV B,#10 ;\u79d2\uff0c\u5206\uff0c\u65f6 \u5206\u522b\u9664\u4ee510 \u5206\u4e24\u4f4d\u663e\u793a
DIV AB
MOV 32H,A
MOV 31H,B
MOV A,31H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR, A
MOV DPTR,#8002H
MOV A,#00000001B ;\u6570\u7801\u7ba1\u4f4d\u9009 \u663e\u793a\u5728\u6700\u4f4e\u4f4d
MOVX @DPTR,A
ACALL DLAY

MOV A,32H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00000010B
MOVX @DPTR,A
ACALL DLAY

MOV A,28H
MOV B,#10
DIV AB
MOV 34H,A
MOV 33H,B
MOV A,33H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00000100B
MOVX @DPTR,A
ACALL DLAY

MOV A,34H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00001000B
MOVX @DPTR,A
ACALL DLAY

MOV A,29H
MOV B,#1O
DIV AB
MOV 36H,A
MOV 35H,B

MOV A,35H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00010000B
MOVX @DPTR,A
ACALL DLAY

MOV A,36H
MOV DPTR,#LEDSEG
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00100000B
MOVX @DPTR,A
ACALL DLAY
LJMP DZSPLAY
DLAY:MOV R1,#01H \u5ef6\u65f6\u5b50\u7a0b\u5e8f
DL2:MOV R2,#01H
DL1:NOP
NOP
DJNZ R2,DL1
DJNZ R1,DL2
RET
LEDSEG:DB 3FH,06H,5BH,4FH,66H,6DH,7DH 07H,7FH,6FH ;0-9\u6570\u7801\u663e\u793a\u7ba1

\u6307\u4ee4\u4e0d\u6e05\u695a\u770b\u4e0b\u5355\u7247\u673a\u7684\u4e66

\u8fd9\u4e2a4KB\u7684\u7247\u5185\u5b58\u50a8\u5668\u662f\u5382\u5bb6\u8bbe\u8ba1\u65f6\u5d4c\u5165\u7684\uff0c\u81f3\u4e8e\u4e3a\u4ec0\u4e48\uff0c\u6050\u6015\u662f\u8bbe\u8ba1\u8005\u5f53\u65f6\u8003\u8651\u523051\u5f53\u65f6\u7edd\u5927\u90e8\u5206\u5e94\u7528\u4ee3\u7801\u57284K\u4ee5\u5185\u5c31\u53ef\u4ee5\u5b9e\u73b0\uff0c\u56e0\u6b64\u4ece\u7ecf\u6d4e\u65b9\u9762\u8003\u8651\u7684\u7ed3\u679c\u3002\u8fd94K\u7684\u5730\u5740\u662f\u4ece0000H~0FFFH\u3002

正常的过程调用后会返回到下一个指令地址,即 0108h,但是因为这个过程修改了返回地址;

0503h,0504h 句将 010ah 压入了堆栈,成为新的返回地址;

SP(42h):0108h ;

SP(44h):010ah ;

如此过程返回地址为 010ah,那么 ADD A,#10H 就没有执行;



答案中,(SP)=42H,是对的。
(A)=(B)答案是错的,应为40H。因为程序中执行了一条(A)的内容和常数#10H的加法指令,求和后A里的值应为40H,B里的值和A相等

1 单片机基础
1.1单片机的三大资源
1.1.1 FLASH(程序存储空间<ROM>)
特点:FLASH可以重复擦写、容量大成本低、断电后数据不丢失。
1.1.2 RAM(内存)
用于单片机运行过程中产生的数据、断电后数据丢失,但运行速度快、理论上可以无限次擦写。
1.1.3 SFR(特殊功能寄存器)
单片机中有很多功能、每个功能都对应一个或多给特殊功能寄存器。
1.2 51单片机
1.2.1 定义
兼容Intel的MCS-51体系架构的一系列单片机。
STC89C52:
由中国宏晶公司生产。
8K的FLASH、512字节的RAM、32个IO口、3个定时器、1个UART、8个中断源。
1.2.2单片机最小系统(单片机的核心)
三要素:电源电路、晶振电路、复位电路
电源电路:STC89C52使用5V电压(5.5V~3.4V)。40脚接电源正极(VCC),20脚接电源负极(GND)
晶振电路:用于给单片机提供一个基本信号。
STC89C52使用11.0592M的晶振(震荡:11.0592M次/秒,1M=10^6)。
电容的作用是帮助晶振起振并维持晶振信号的稳定。
晶振电路接入单片机的18、19脚。

  • 涓轰粈涔鎴戠殑8051鍗曠墖鏈浠g爜鏈夐棶棰?
    绛旓細C璇█缂栫▼锛屼笉瀵归氱敤瀛樺偍鍣ㄧ洿鎺ユ搷浣滐紝浣犳庝箞鐭ラ亾R0搴旇闅廟1鑰屽彉鍖栧憿锛熶豢鐪熺殑璇濓紝鍙鏌ョ湅鐪嬪璁綪1鐨勭姸鎬佺鍚堣姹傚氨琛屻
  • 8051鍗曠墖鏈闂
    绛旓細74ls138 鏄渶鍩虹鐨勮瘧鐮佽姱鐗囷紝璧勬枡浣犺嚜宸辨煡闃咃紝Y0' 鏈夋晥蹇呴』鏄垜鐢荤殑杈撳叆淇″彿锛屽嵆鍦板潃楂樹綅鍙兘鏄100000锛屼篃灏辨槸 AD667 鐨勫湴鍧锛屽墿涓嬫渶浣庝袱浣嶇敤浜庨夋嫨 AD667 鍐呴儴鐨勫崟鍏冦绋嬪簭鏇翠笉鐢ㄨ浜嗭紝瑕侀珮鏁堢巼鍦颁紶杈撳ぇ閲忔暟鎹紝鍙兘鐢 P0 鍙c傝繖浜涢兘鏄熀纭鐭ヨ瘑锛屼綘鐪嬩笉鎳傚氨涓嶈寰涓嬬湅浜嗭紝杩斿洖鏁欐潗鐨勫墠闈㈣ˉ琛ヨ鍚...
  • 51鍗曠墖鏈虹殑闂,姹傚ぇ绁炶В绛斻涓轰粈涔8051鍗曠墖鏈虹殑鐗囧唴绋嬪簭瀛樺偍鍣ㄤ负4KB...
    绛旓細杩欎釜4KB鐨勭墖鍐呭瓨鍌ㄥ櫒鏄巶瀹惰璁℃椂宓屽叆鐨勶紝鑷充簬涓轰粈涔堬紝鎭愭曟槸璁捐鑰呭綋鏃惰冭檻鍒51褰撴椂缁濆ぇ閮ㄥ垎搴旂敤浠g爜鍦4K浠ュ唴灏卞彲浠ュ疄鐜帮紝鍥犳浠庣粡娴庢柟闈㈣冭檻鐨勭粨鏋溿傝繖4K鐨勫湴鍧鏄粠0000H~0FFFH銆
  • 鍏充簬C璇█缂栧啓8051绋嬪簭鐨闂
    绛旓細绗竴锛孡Z 鐨勪富鍑芥暟娌℃湁寰幆璇彞锛岃櫧鐒剁紪璇戝櫒 缂栬瘧鐨勬椂鍊 浼氬府浣犲姞涓婂幓锛屽彲鏄繖涓嶆槸涓ソ涔犳儻锛涚浜岋紝51鍗曠墖鏈 鍙兘璇嗗埆浣庣數骞筹紝鏃犳硶璇嗗埆楂樼數骞筹紝鎵浠ワ紝鏉ヤ綆鐨勫彲浠ヨ瘑鍒紝鏉ラ珮鐨勶紝灏遍渶瑕佺‖浠舵敮鎸佷簡銆傜涓夛紝鐪熻鍐绋嬪簭鐨勮瘽锛孡Z鐨勮姹傛弿杩帮紝涓庣▼搴忛兘杩囦簬绠鍗曪紝鏃犳硶璁捐鍚堢悊绋嬪簭銆
  • 8051鍗曠墖鏈涓柇瀛绋嬪簭濡備笅,寤舵椂瀛愮▼搴忔槸0.2绉鐨,涓柇瑙﹀彂鏃舵甯,涓柇杩 ...
    绛旓細鍢垮樋 浣犵殑涓や釜绋嬪簭閮芥湁闂 鎬庝箞杩樿兘绠楁槸瀹岀編鍛紵绗竴涓▼搴忕殑闂鏄細鍦ㄤ腑鏂椂锛屽帇鍏ヤ竴涓▼搴忕姸鎬佸瓧淇濆瓨 浣嗗嵈鎭㈠浜嗕袱涓暟鎹竴涓佺粰浜嗙▼搴忕姸鎬佸瓧涓涓佺粰浜嗙疮鍔犲櫒锛屽嵆鎶婁富绋嬪簭鐨勬柇鐐瑰湴鍧鍙栬蛋浜嗭紝 寰堜弗閲嶇殑閿欒鍟 涓柇绋嬪簭涓嶈兘姝g‘杩斿洖涓荤▼搴忎簡 PUSH PSW PUSH ACC ;淇敼鍚 鍔犵殑鎸...
  • 鏈汉鏈変竴浠8051鍗曠墖鏈虹殑c璇█绋嬪簭,淇濊瘉绠楁硶璇硶姝g‘銆傜幇鎬ラ渶鏀逛负pic鍗...
    绛旓細0X0C;// 1M 4800锛12锛//SPBRG = 0X0C;// ! 1M 9600锛5锛塗XSTA = 0X24; // 浣胯兘涓插彛鍙戦侊紝閫夋嫨楂橀熸尝鐗圭巼96000010 0100 RCSTA = 0X90; // 浣胯兘涓插彛宸ヤ綔锛岃繛缁帴鏀1001 0000 RCIE = 1; // 浣胯兘鎺ユ敹涓柇PIE1 PIR1 GIE = 1; // 寮鏀惧叏灞涓柇 } 鐢ㄤ腑鏂嚱鏁 绋嬪簭鏀跺彂鏁版嵁 ...
  • 8051鍗曠墖鏈虹殑鏁板瓧閽熸眹缂绋嬪簭
    绛旓細ORG 0000H ;绋嬪簭鎵ц寮濮嬪湴鍧 LJMP START ;璺冲埌鏍囧彿START鎵ц ORG 0003H ;澶栦腑鏂0涓柇绋嬪簭鍏ュ彛 LJMP REMO ;澶栦腑鏂0涓柇杩斿洖 ORG 000BH ;瀹氭椂鍣═0涓柇绋嬪簭鍏ュ彛 LJMP TIME0 ;璺宠嚦INTTO鎵ц ORG 0013H ;澶栦腑鏂1涓柇绋嬪簭鍏ュ彛 RETI ;澶栦腑鏂1涓柇杩斿洖 ORG 001BH ;...
  • 8051鍗曠墖鏈虹殑宸ヤ綔鍘熺悊鏄浠涔?
    绛旓細鍗曠墖鏈鸿嚜鍔ㄥ畬鎴愯祴浜堝畠鐨勪换鍔$殑杩囩▼锛屼篃灏辨槸鍗曠墖鏈烘墽琛绋嬪簭鐨勮繃绋嬶紝鍗充竴鏉℃潯鎵ц鐨勬寚浠ょ殑杩囩▼锛屾墍璋撴寚浠ゅ氨鏄妸瑕佹眰鍗曠墖鏈烘墽琛岀殑鍚勭鎿嶄綔鐢ㄧ殑鍛戒护鐨勫舰寮忓啓涓嬫潵锛岃繖鏄湪璁捐浜哄憳璧嬩簣瀹冪殑鎸囦护绯荤粺鎵鍐冲畾鐨勶紝涓鏉℃寚浠ゅ搴旂潃涓绉嶅熀鏈搷浣;鍗曠墖鏈烘墍鑳芥墽琛岀殑鍏ㄩ儴鎸囦护锛屽氨鏄鍗曠墖鏈虹殑鎸囦护绯荤粺锛屼笉鍚岀绫荤殑鍗曠墖鏈猴紝鍏...
  • 搴旂敤绋嬪簭涓嶈兘璁块棶8051鍗曠墖鏈虹殑绋嬪簭瀛樺偍鍣
    绛旓細浠0100寮濮嬫椂鎵嶈闂殑澶栭儴鏁版嵁瀛樺偍鍣紝鎵浠ヤ綘鐨勭▼搴娌″弽搴斾簡銆8051鍗曠墖鏈鏈5涓腑鏂簮锛屼袱涓涓柇锛屼袱涓畾鏃跺櫒涓柇锛屼竴涓覆鍙d腑鏂1.寮曡捣涓柇鐨勫師鍥狅紝鎴栬呰兘澶熷彂鍑轰腑鏂姹備俊鍙风殑鏉ユ簮缁熺О涓轰腑鏂簮銆傞氬父涓柇婧愬垎涓猴細澶栭儴璁惧璇锋眰涓柇锛屾晠闅滃己杩腑鏂紝瀹炴椂鏃堕挓璇锋眰涓柇锛屾暟鎹氶亾涓柇锛岀▼搴忚嚜鎰夸腑鏂2....
  • 姹備竴浠8051鍗曠墖鏈虹殑璺戦┈鐏疌绋嬪簭銆傝姹傚彧鐢╬1绔彛鎺у埗8鐩忕伅銆傝8鐩忕伅寰 ...
    绛旓細include<reg52.h> void delay(unsigned int cnt){ while(--cnt);} main(){ P1=0xfe; //缁欏垵濮嬪寲鍊 鎹㈢畻鎴愪簩杩涘埗鏄1111 1110 while(1){ delay(30000);//寤舵椂绋嬪簭 P1<<=1; //宸︾Щ涓浣 璇ヨ鍙ョ瓑鏁堜簬 P1=P1<<1 P1|=0x01; //鏈鍚庝竴浣嶈ˉ1锛岃璇彞绛夋晥浜 P1=P1|0x01 绗...
  • 扩展阅读:plc基础知识指令27个 ... 8051引脚图及功能 ... 8051 ... 当单片机应用系统需要扩展 ... 8051内核 ... 8051指令集stc-y1 ... 8051单片机实物图 ... 不属于51单片机的特点 ... 8051的五个中断源 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网