一道单片机编程题目 一道单片机的编程题

\u4e00\u9053\u5355\u7247\u673a\u7684\u7f16\u7a0b\u9898

\u73b0\u5047\u5b9a\u5de6\u8fb9\u662f\u5730\u5740\uff0c\u53f3\u8fb9\u7684\u662f\u5185\u5bb9
1.\u5b83\u7684\u529f\u80fd\u662f\u4ee550H\u4e3a\u9996\u5730\u5740\uff0c\u4e2a\u6570\u4e3a0AH\u4e2a\u7684RAM\u5168\u90e8\u6e05\u96f6

2.\u673a\u5668\u7801
7A 0A\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7MOV R2,#0AH
mov rn\u7684\u673a\u5668\u7801\u662f01111xxx\uff0c\u5176\u4e2dxxx\u7531Rn\u7684\u5730\u5740\u6765\u51b3\u5b9a\uff0c\u76f8\u5e94\u5730\uff0cR0~R7\u4e8c\u8fdb\u5236\u5730\u5740\u4e3a000~111
\u90a3\u4e48R2\u5c31\u662f010\uff0c\u540e\u9762\u7684\u6570\u636e\u5c31\u8ddf\u7740mov rn\u7684\u673a\u5668\u7801\u540e\u9762


7850\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7MOV R0,#50H
E4 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7CLR A\uff1b
\u673a\u5668\u7801\u56fa\u5b9a
F6 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7LOOP:MOV @R0,A

mov @rn\uff0ca\u673a\u5668\u7801\u4e3a1111011n
n\u5c31\u662fRn\u7684n
\u6240\u4ee5\u95f4\u63a5\u5bc4\u5b58\u5668\u5bfb\u5740\u53ea\u80fd\u662fR1\u6216R0

08 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7INC R0
inc rn\u673a\u5668\u7801\u4e3a00001xxx
xxx\u540c\u7406\u4e3aRn\u7684\u7269\u7406\u5730\u5740

DA__ \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7DJNZ R2,LOOP
djnz rn\u673a\u5668\u780111011xxx
xxx\u540c\u7406\u4e3aRN\u7684\u7269\u7406\u5730\u5740
loop\u4e3a8\u4f4d\u5730\u5740\u6807\u53f7
\u673a\u5668\u7801\u662f\u4ee5loop\u4e3a\u9996\u7684\u7b2c\u4e00\u4e2a\u6307\u4ee4\u79bbloop\u7684\u5355\u5143\u6570
\u6240\u4ee5djnz r2\uff0cloop\u7684loop\u4e0d\u80fd\u653e\u5728\u6b64\u540e\u8d85\u8fc7255\u5b57\u8282\u7684\u7a0b\u5e8f\u7a7a\u95f4\u5355\u5143
\u9898\u4e2dloop\uff1a\u540e\u9762\u8ddf\u6709MOV @R0,A\u53601\u4e2a\u5185\u90e8ram\u5355\u5143\uff0cINC R0\u53601\u4e2a\u5185\u90e8ram\u5355\u5143\uff0cDJNZ R2\u53601\u4e2a\u5185\u90e8ram\u5355\u5143\uff08\u7531\u673a\u5668\u7801\u53ef\u5f97\uff09\uff0c\u6240\u4ee5255-3=252=FCH
\u5373\u673a\u5668\u7801\u4e3aDAFC


\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7DONE:

3.\u5bf9\u4e8e\u7b2c\u4e09\u4e2a\u95ee\u9898\uff0c\u697c\u4e0a\u7684\u65b9\u6cd5\u6709\u8bef
\uff0cR0\u548cR2\u6709\u53ef\u80fd\u572800H~A0H
\u800c\u4e14\u4f60\u53ea\u662f\u628a0~10\u653e\u516550H~5AH\u5355\u5143
\u6240\u4ee5\u53ef\u4ee5\u8fd9\u6837
SETB RS1
SETB RS0;R0\u5de5\u4f5c\u572818H\u5355\u5143
MOV A,#50H
MOV R2,#10
MOV R0,#0
LOOP:
MOV @R0,A
INC A
INC R0
DJNZ R2,LOOP

\u7ecf\u4eff\u771f\u65e0\u8bef

\u4e0d\u77e5\u9053\u4f60\u7528\u4ec0\u4e48\u82af\u7247\uff0c\u8fd9\u91cc\u5c31\u62ff\u8ba1\u7b97\u673a\u7684\u6c47\u7f16\u6765\u6f14\u793a\u4e00\u4e0b\u600e\u4e48\u7b97\u5427
\u56e0\u4e3a\u5355\u7247\u673a\u6ca1\u6709\u4e58\u6cd5\u8fd0\u7b97\uff0c\u6240\u4ee5\u4e0d\u80fd\u7528\u4e58\u6cd5\u6307\u4ee4\uff0c\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u7528\u79fb\u4f4d\u6307\u4ee4\u5b9e\u73b0
mov
al,31h
mov
ah,30h
shl
al,1
;\u5de6\u79fb\u4e00\u4f4d
rcl
ah,1
;\u5e26\u8fdb\u4f4d\u5faa\u73af\u5de6\u79fb
\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e86\uff0c\u56e0\u4e3a\u5355\u7247\u673a\u90fd\u662f8\u4f4d\u7684\u5bc4\u5b58\u5668\uff0c\u6240\u4ee5\u6211\u4e5f\u75288\u4f4d\u6765\u6f14\u793a\uff0c\u547d\u4ee4\u4f60\u53ef\u4ee5\u5bf9\u7167\u4f60\u7684\u82af\u7247\u7684\u547d\u4ee4\u7a0d\u4f5c\u6539\u53d8\u5c31\u53ef\u4ee5\u4e86\uff0c\u5de6\u79fb\u4e00\u4f4d\u5c31\u662f\u4e58
2

不知道你用什么芯片,这里就拿计算机的汇编来演示一下怎么算吧
因为单片机没有乘法运算,所以不能用乘法指令,但是我们可以用移位指令实现

mov al,31h
mov ah,30h
shl al,1 ;左移一位
rcl ah,1 ;带进位循环左移
这样就可以了,因为单片机都是8位的寄存器,所以我也用8位来演示,命令你可以对照你的芯片的命令稍作改变就可以了,左移一位就是乘 2

不是双字节乘以双字节,不用那么麻烦。不管是几位二进制数,乘以2的话就是整体左移一位
51的汇编

CLR C
MOV A,31H
RLC A
MOV 31H,A
MOV A,30H
RLC A
MOV 30H,A

可能的进位存在于C中

mov r1,30h
mov r2,31h
mov r3,#00h
mov r4,#00h
mov r5,#00h
mov r6,#02h
LCALL TWOBITMUL
mov 30h,r3
mov 31h,r4

;===========================双字节二进制乘法子程序========================================================
;===============被乘数的入口地址为R1~R2,乘数的入口地址为R5~R6,积在R1~R4中,都是高位在前==============================
TWOBITMUL:
MOV A,R2
MOV B,R6
MUL AB
MOV R4,A
MOV R3,B
;--------------R2与R6相乘暂存部分积----------------------------
MOV A,R2
MOV B,R5
MUL AB
CLR C
ADDC A,R3
MOV R3,A
MOV R2,B
JNC NEXT1
INC R2
;-------------R2与R5相乘暂存部分积------------------------------
NEXT1:
MOV A,R1
MOV B,R6
MUL AB
CLR C
ADDC A,R3
MOV R3,A
JNC NEXT2
INC R2
CLR C
NEXT2:
MOV A,B
ADDC A,R2
JNC NEXT3
MOV R7,#01H
AJMP NEXT4
NEXT3:
MOV R7,#00H
NEXT4:
MOV R2,A
;--------------R1与R6相乘暂存部分积---------------------------
MOV A,R1
MOV B,R5
MUL AB
CLR C
ADDC A,R2
MOV R2,A
MOV R1,B
JNC FINISH9
INC R1
FINISH9:
MOV A,R7
ADD A,R1
MOV R1,A
RET

  • 鏉ヤ竴涓鍗曠墖鏈虹紪绋澶х,涓閬撻,璋簡
    绛旓細鏉ヤ竴涓鍗曠墖鏈虹紪绋澶х,涓閬撻,璋簡璁℃暟鍣ㄥ0鏄:濡傛灉浠跨湡涓湁涓嶇啛鎮夋垨涓嶄細鐢ㄧ殑鍣ㄤ欢,鍙互鑷繁鏇存崲,鍙鏈鍚庤揪鍒颁豢鐪熻姹備互鍗冲彲銆1銆佹暟鐮佺鏄剧ず閮ㄥ垎(30鍒)(1)姝e父鎯呭喌涓,鏁扮爜绠... 鏉ヤ竴涓崟鐗囨満缂栫▼澶х,涓閬撻,璋簡璁℃暟鍣ㄥ0鏄:濡傛灉浠跨湡涓湁涓嶇啛鎮夋垨涓嶄細鐢ㄧ殑鍣ㄤ欢,鍙互鑷繁鏇存崲,鍙鏈鍚庤揪鍒颁豢鐪熻姹備互鍗冲彲銆1銆佹暟...
  • 鏈夊叧鍗曠墖鏈虹紪绋鐨2閬棰樼洰銆傚笇鏈涘悇浣嶅ぇ绁炲彲浠ヤ负鎴戣В绛,鍦ㄦ瘡涓姝ュ悗鏍囦笂...
    绛旓細ORG 0000H;澶嶄綅鍚姩 AJMP START;;涓荤▼搴=== START:MOV A,#BLOCK;鏁版嵁寮濮嬪湴鍧 MOV R0,A ADD A,#4;瀛樻斁缁撴灉鍗曞厓浣庡瓧鑺 MOV R1,A ;MOV A,@R0;绗竴涓暟浣庡瓧鑺 INC R0 MOV B,@R0;绗竴涓暟楂樺瓧鑺 INC R0;鎸囧悜绗簩涓暟浣庡瓧鑺 ;ADD A,@R0;鍔犵浜屼釜鏁颁綆瀛楄妭 MOV @R1,A;瀛樼粨鏋滃崟鍏...
  • 51鍗曠墖鏈虹紪绋嬮,鐢ㄦ眹缂栬瑷鎬庝箞鍋?
    绛旓細鍦8051鍗曠墖鏈鐨勬椂閽熼鐜囦负6MHz锛岄偅涔堝畾鏃跺櫒鐨勮鏁拌剦鍐插懆鏈熷氨鏄 2uS锛泂bit CP=P1^0;void Timer0_init(){ TMOD |=0x01; //T0瀹氭椂鍣紝鏂瑰紡1锛岄噰鐢16浣嶅畾鏃跺櫒 TH0 = (65536-500)/256; //瀹氭椂鍣ㄨ鍒濆500, 鍗 1000uS 涓柇涓娆 TL0 = (65536-500)%256;EA=1; ET0=1; TR0=1;} ...
  • 姹傝В涓閬撳崟鐗囨満C璇█缂栫▼棰,鎬
    绛旓細sbit BUTTON = P1^1;sbite LED = P1^0;unsigned int reg;void main(void){ while(1){ if (!BUTTON){ reg= 5000;while(--reg);if (!BUTTON){ LED = ~LED;while(!BUTTON);} } } }
  • 姹傜粍涓閬绠鍗曠殑鍗曠墖鏈虹紪绋嬮銆傛湁鍏洀鐏痯0~p7,鐜板湪瑕佽瀹冧粠閲屽埌澶栨瘡娆...
    绛旓細sbit led4=P0^3;sbit led5=P0^4;sbit led6=P0^5;sbit led7=P0^6;sbit led8=P0^7;sbit led_k=P1^0;sbit du=P1^1;sbit we=P1^2;void delayms(unsigned int i);/*寤舵椂鍑芥暟*/ main(){ led_k=1;/*鎵撳紑8涓猯ed鐨勬诲紑鍏*/ du=0;we=0;while(1){ led1=0;delayms(500);led1...
  • 杩欐槸涓閬撳崟鐗囨満鐨棰樼洰!璇缂栫▼浣縋1.0銆丳1.1鍒嗗埆杈撳嚭鍛ㄦ湡涓1s鍜2s鐨勬柟 ...
    绛旓細void timer锛堬級interrupt 1 锝汿H0 =(65536 - 50000)/256;//50ms TL0 =(65536 - 50000)%256;tc0++;tc1++;if锛坱c0==20 锛墈P1_0 = ~P1_0;tc0 = 0;} if锛坱c1==40锛墈P1_1=~P1_1;tc1 = 0;}锝
  • 涓閬撳崟鐗囨満棰樼洰,(A)=70H,(R0)=30H,(30H)=A0H,(PSW)=80H
    绛旓細锛1锛堿DD A, R0 锛嶏紞锛岮 = 70H + 30H = A0H 锛2锛堿DDC A,30H锛嶏紞锛岮 = 70H + (30H) + 1 锛嶏紞锛=70H + A0H + 1 = 11H 锛3锛塖UBB A,30H锛嶏紞锛岮 = 70H 锛 (30H) 锛 1 锛嶏紞锛=70H 锛 A0H 锛 1 = CFH
  • 1.鍗曠墖鏈瀹為獙:鑻ュ皢40H鐨勫唴瀹规敼涓篛FH,绋嬪簭搴斿皢濡備綍淇敼?(鍐欏嚭鍘熷绋嬪簭...
    绛旓細鏍规嵁棰樼洰鎻忚堪锛屾垜浠彲浠ユ帹鏂嚭杩欐槸涓閬鍏充簬鍗曠墖鏈虹紪绋鐨勫疄楠岄銆傚湪姝わ紝鎴戝皢绠瑕佷粙缁嶄竴涓嬩慨鏀40H鐨勫唴瀹逛负OFH鍚庣▼搴忓簲璇ュ浣曚慨鏀圭殑鏂规硶銆傞鍏堬紝闇瑕佹槑纭殑鏄40H鍜孫FH閮芥槸16杩涘埗鏁般40H瀵瑰簲10杩涘埗鏁颁负64锛岃孫FH瀵瑰簲10杩涘埗鏁颁负15銆傚洜姝わ紝濡傛灉灏40H鐨勫唴瀹规敼涓篛FH锛岀浉褰撲簬灏嗗唴瀛樺湴鍧涓40H鐨勫崟鍏冧腑瀛樺偍鐨勬暟鍊...
  • 绠鍗曠殑鍗曠墖鏈闂,楂樺垎鎮祻50绛旀,鎬!
    绛旓細鍦ㄦ櫠鎸负6MHZ鏉′欢涓嬶紝P1銆1鍙h緭鍑哄懆鏈熶綅ms鐨勫绉版柟娉紝浣跨敤瀹氭椂鍣═0鐨勬柟寮0缂栫▼ 鎷!杩樻湁杩欎釜棰樼洰鍟? 鎵句换浣曚竴鏈鍗曠墖鏈涔︽妱涓涓兘琛,涓婇潰璁插畾鏃跺櫒渚嬪瓙涓瀹氫細璁蹭骇鐢熷懆鏈熸柟娉! 鑷繁瑙e喅!涓 绠杩8255鑺墖鐨勫唴閮ㄦ湁鍑犱釜涓昏缁勬垚閮ㄥ垎锛屾瘡閮ㄥ垎鍔熻兘濡備綍锛熻繖涓鐩綘鏈夌┖鍦ㄨ繖闂,杩樹笉濡傚湪鐧惧害閲屾悳鎼滃憿,鏅曟 ...
  • 鍏充簬鍗曠墖鏈鐨涓閬绋嬪簭棰樼洰
    绛旓細POP DPH POP DPL 锛涘脊鍑哄爢鏍2娆★紝SP=50H MOV DPTR锛#4000H 锛汥PTR=4000H RL A 锛汚鐢02鍙樻垚04H MOV B锛孉 锛汚鐨勬暟鎹佸埌B鏆傚瓨 MOVC A锛孈A+DPTR 锛涘皢4+4000H锛堜篃灏辨槸4004锛夌殑鏁版嵁閫佸埌A 鏈鍚庝袱琛岃〃绀篋B鍚庨潰鐨勬暟鎹緷姝ゅ湪4000H寮濮嬬殑鍗曞厓涓紝30H鍦4004H鍗曞厓銆傛墍浠=30...
  • 扩展阅读:少儿编程题目及答案 ... c十十编程 ... c十十编程要学多久 ... 免费自学编程的app ... 扫一扫题目出答案 ... c十十编程教学视频 ... 自学编程10秒学会 ... 编程必背100个代码 ... 单片机编程题100题 ...

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