完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我这里用汇编编写一个51的程序 提示了一个错误 但是我觉得是没有错误的 麻烦你帮看看
这是错误提示:shishi.asm(58): error A48: DATA-ADDRESS EXPECTED 它指向下面这句话:MOV 20H.0,INTA 其中INTA是这样定义的:INTA equ p3.4 我觉得不应该有错误了 总的程序如下: INA equ p3.4 ;¹âµç¿ª¹ØA ±¾À´ABΪµ¼Í¨×´Ì¬ INB equ p3.7 ;¹âµç¿ª¹ØB out1 equ p2.0 ;µç´Å·§¼ÌµçÆ÷ out2 equ p2.7 ;µã»ð¼ÌµçÆ÷ out3 equ p2.1 ;¹Ä·ç»úÖ÷¼ÌµçÆ÷,0:open;1:close out4 equ p2.5 ;¹Ä·ç»ú¸ßµÍËÙÇл»¼ÌµçÆ÷,0:low;1:high org 0000h //³ÌÐòÔÚ0000hºó¿ªÊ¼ ajmp 0030h //µ÷µ½Ö÷³ÌÐò 00µ½30Ö®¼äÊÇÖжϺ¯ÊýµÄÈë¿Ú Ö÷³ÌÐòÔÚ30Ö®ºó ËùÒÔÒªÌøת org 0030h //³ÌÐòÔÚÖ÷³ÌÐòÖ´ÐÐ START: MOV SP,#60H //ÉèÖöÑÕ»Ö¸Õë¼Ä´æÆ÷ ÆäֵΪ60 MOV IP,#00H //ÉèÖÃÖжÏÓÅÏȼ¶¼Ä´æÆ÷ ËùÓÐÖжϵÄÓÅÏȼ¶¶¼Îª×î¸ß¼¶ MOV IE,#00H //ÉèÖÃÖжÏʹÄܼĴæÆ÷ ½ûÖ¹ËùÓеÄÖÐ¶Ï MOV 20H,#00H //³õʼ»¯20H 21H 22HͨÓüĴæÆ÷ MOV 21H,#00H MOV 22H,#00H CLR OUT1 //ÇåÁãp2.0 µç´Å·§¼ÌµçÆ÷ CLR OUT2 //ÇåÁãp2.7 µã»ð¼ÌµçÆ÷ CLR OUT3 //ÇåÁãp2.1 ¹Ä·ç»úÖ÷¼ÌµçÆ÷,0:open;1:close CLR OUT4 //ÇåÁã¹Ä·ç»ú¸ßµÍËÙÇл»¼ÌµçÆ÷,0:low;1:high main: LCALL D4300MS //µ÷ÓÃD4300MS ³¤µ÷Óà ×Ó³ÌÐò×î´óΪ64KB MOV 22H,21H //°Ñ21HµÄÖµ¸´ÖƵ½22H MOV 21H,20H ACALL READIN //¾ø¶Ôµ÷Óà ×Ó³ÌÐò×î´óΪ2KB STAT3: ;JB 22H.1,STAT4 ;B¶Ï¿ª JB 21H.1,STAT4 ;B¶Ï¿ª Ϊ1תÒÆ JB 20H.1,STAT4 ;B¶Ï¿ª AJMP NEXT STAT4: JNB 21H.0,A0B0 ;Aµ¼Í¨×ªÒÆ ²»Îª1תÒÆ AJMP MAIN NEXT: JB 20H.0,A1B0 ;A¶Ï¿ª×ªÒÆ Îª1תÒÆ A0B0: ;Aµ¼Í¨Bµ¼Í¨ CLR OUT1 ;µç´Å·§Í¨µç CLR OUT2 ;µã»ðÕ벻ͨµç CLR OUT3 ;¹Ä·ç»ú¿ª CLR OUT4 ;¹Ä·ç»úµÍËÙÔËÐÐ AJMP MAIN A1B0: ;A¶Ï¿ªBµ¼Í¨ SETB OUT1 ;µç´Å·§¶Ïµç SETB OUT2 ;µã»ðÕëͨµç ACALL D700MS ;ÑÓʱ0.7Ãë CLR OUT3 ;¹Ä·ç»ú¿ª SETB OUT4 ;¹Ä·ç»ú¸ßËÙÔËÐÐ ACALL D4300MS;ÑÓʱ4.3Ãë CLR OUT2 ;µã»ðÕ벻ͨµç AJMP MAIN E_MAIN: AJMP MAIN ;READ INPUT READIN: ;ABde״̬ɨÃè³ÌÐò ¿ªÊ¼Ê±AB¶¼µÈÓÚ0 µ±Óб仯µÄʱºòÍ˳ö µ«²¢²»ÖªµÀÊÇÄǸö±ä»¯ÁË ±ä»¯Á˾Í˵Ã÷ABÓÐÒ»¸ö±äΪ1ÁË MOV 20H,#00H ;³õʼ»¯20H SETB INA ;ÖÃλINA Òª¶ÁIO¿Ú¾Í±ØÐëÏÈÖÃλ¸ÃIO¿Ú p3.4 ¹âµç¿ª¹ØA MOV 20H.0,INA ;°ÑINA p3.4 ¹âµç¿ª¹ØA µÄ״̬±£´æµ½20H.0 SETB INB MOV 20H.1,INB ;°Ñp3.7 ¹âµç¿ª¹ØBµÄ״̬±£´æµ½20H.1 MOV A,20H ;°Ñ20HµÄÊý¾ÝתÒƵ½ÀÛ¼ÓÆ÷AÖÐ MOV R7,#10H ;°Ñ10·Åµ½R7Àï DJNZ R7,$ ;Ñ»·16´Î ÑÓʱ16´Î MOV 20H,#00H ;Çå³ý20H Êý¾ÝÒѾÒƽ»¸øA SETB INA ;ÔٴλñÈ¡AµÄÊäÈë MOV 20H.0,INA SETB INB MOV 20H.1,INB CJNE A,20H,READIN ;Compare Jump Not Equal ±È½Ï²»ÏàµÈתÒÆÖ¸Áî 20HÀïµÄÊýÖµºÍA±È½Ï Èô²»ÏàµÈÔòתÒƵ½READIN¼´±¾³ÌÐò¿ªÍ· ÔÙ´ÎɨÃè ±ÜÃâ¸ÉÈÅ ²»ÏàµÈÔò˵Ã÷ÊÇÔëÉù Õâ¾ä»°µÄ×÷ÓþÍÖ»ÊÇ˵Ã÷ûÓÐÔëÉù°ÕÁË CJNE A,21H,E_READIN ;תÒƵÄʱºòµ÷ÓÃÍ˳öÖ¸Áî Í˳öREADIN ¾ÍÊÇ˵µ±21HµÄÖµºÍA²»ÏàµÈµÄʱºòÍ˳öREADIN MOV 21H,20H 21HµÄÄÚÈÝΪ00 ÓÐÒ»¸öµ¼Í¨Í˳ö Õâ¾ä»°²ÅÊÇÅжÏÓÐûÓб仯 AJMP READIN ;ÎÞÌõ¼þתÒÆ»ØREADIN º¯Êý¿ªÊ¼ ÔÙ´ÎÑ»·É¨Ãè READ_B: ;B¶Ï¿ª,0.7ÃëÄÚ¶ÁAÊÇ·ñµ¼Í¨±äΪ0£© AÔÚINAµÈÓÚ1µÄʱºòµ¼Í¨ µ¼Í¨Îª1 ¶Ï¿ªÎª0 JNB 20H.1,READ_A ;B¶Ï¿ª ÍùÏÂ×ß Î»Ìõ¼þתÒÆ Î»Îª0ʱתÒÆ BµÄ״̬´æ·ÅÔÚ20H.1ÀïÃæ Èô20H.1µÈÓÚ0ÔòתÒƵ½READ_A ·ñÔò˳ÐòÖ´ÐÐ 20H.1µÈÓÚ0Ôò˵Ã÷±ä»¯µÄ²»ÊÇB ±¾À´ÊǶϿªµÄ¼´0ËùÒÔ˵ÊÇAµ¼Í¨ RAL: MOV R5,#7 ;×°ÔØR5.6.7 RAL3: MOV R6,#95 RAL2: MOV R7,#210 ;µ¼Í¨Îª0 ¶Ï¿ªÎª1 RAL1: SETB INA ;°ÑAÖÃÒ» ÏÂÒ»²½¾ÍÒª¶ÁÈ¡AµÄÖµ µ±Aµ¼Í¨ÊÇ INAµÈÓÚ0 JNB INA,SAV4 ;A¶Ï¿ªÍùÏÂ×ß µ¼Í¨µÄʱºòתÒÆ Ö±½ÓÑ°Ö·²»Îª1ʱתÒÆ Èç¹ûINAµÈÓÚ0 תÒƵ½SAV4 Ö»ÒªAµ¼Í¨£¨±äΪ0£© ¾ÍÌø³ö¶Á³ö µ±È»³¬Ê±µÄʱºòÒ²»áÌø³ö DJNZ R7,RAL1 ;R7¼õ1²»Îª0 Ìøת Ö´ÐÐ7 210+210*95+7*210*95=159810´Î DJNZ R6,RAL2 DJNZ R5,RAL3 AJMP E_READIN ;³¬Ê± Ìøתµ½E_READIN READ_A: ;Aµ¼Í¨,0.7ÃëÄÚ¶ÁBÊÇ·ñ¶Ï¿ª JB 20H.0,E_READIN ;µ±Aµ¼Í¨µÄʱºòתÒÆ Î»Îª1תÒÆ RBL: MOV R5,#7 RBL3: MOV R6,#95 RBL2: MOV R7,#210 RBL1: SETB INB JB INB,SAV4 ;µ±Bµ¼Í¨µÄʱºòתÒÆ µ¼Í¨Îª0 ¶Ï¿ªÎª1 λΪ1תÒÆ DJNZ R7,RBL1 DJNZ R6,RBL2 DJNZ R5,RBL3 AJMP E_READIN SAV4: ;B¶Ï¿ª,Aµ¼Í¨ CLR 20H.0 SETB 20H.1 E_READIN: RET ;ÑÓʱ0.7Ãë d700ms: mov r5, #7 ;°Ñ7×°µ½r5ÖÐ d100ms: mov r6, #199 d500us: mov r7, #250 ;°Ñ250×°Èër7ÖÐ d500usÖ´ÐÐÁË djnz r7, $ ;¼õ1²»ÎªÁãתÒÆÖ¸Áî dec 1 jump if not zero ÏȽ«r7µÄÊý¼õ1 ÅжÏÊÇ·ñΪ0 ²»Îª0¾ÍÌøµ½ÐбêΪRELµÄµØ·½Ö´ÐРΪ0¾Í²»×ªÒÆ ¼ÌÐøÖ´ÐÐÏÂÃæµÄÓï¾ä djnz r6, d500us ;²»ÎªÁã¾ÍÌøµ½d500usµÄµØ·½¼ÌÐøÖ´ÐÐ Ò²¾ÍÊÇÔÙ¼õ250´Î Ò»¹²¼õ250*199=49750´Î djnz r5, d100ms ;ºÍÉÏÃæÒ»Ñù Ò»¹²¼õÁË250+199*250+7*199*250=398250´Î RET ;ÑÓʱ4.3Ãë d4300ms:mov r5, #43 d100ms1:mov r6, #198 d500us1:mov r7, #251 djnz r7, $ ;±êÖ¾·û$ ÊDZ¾ÌõÖ¸ÁîµÄÆðʼµØÖ·µÄÒâ˼ ¾ÍÊÇ˵Èç¹ûr7¼õ1²»ÎªÁã ÄÇôÓÖ¼ÌÐøÖ´Ðб¾ÌõÖ¸Áî¾ÍÊÇÒ»¸öÑÓʱ DINZµÄº¯Êý¶¨Ò壺DJNZ Rn, Rel djnz r6, d500us1 djnz r5, d100ms1 RET END |
|
相关推荐
7个回答
|
|
这代码长得跟火星文一样,没法看啊
|
|
|
|
|
|
|
|
|
|
MOV 20H.0,INTA。这条语句错误不关定义的事情。因为根本就没有这么一条指令。这条指令时楼主自己想当然想出来的。这是位操作,位操作只有两条传输指令,那就是mov c,bit和mov bit,c。因此要先将INTA的值传送给C,再把C的值传给20.0H.就是
|
|
|
|
楼上正解,没有位到位的传输指令
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:19 , Processed in 0.766899 second(s), Total 89, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号