91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

這個單片機程序為什么不行?

   ORG 0000H     ;程序從此地址開始運行
   LJMP MAIN     ;跳轉到 MAIN 程序處

   ORG 030H     ;MAIN 從030H處開始
MAIN:SETB P1.0;
     LCALL DELAY;
     CLR P1.0;
     LCALL DELAY;
     LJMP MAIN;

DElAY:MOV R7,#250;
  D1:MOV R6,#250;
  D2:DJNZ R6,D2;
     DJNZ R7,D1;
     RET;
     END

 

這閃燈程序在仿真都好好的,為什么燒錄后運行不了,而且好幾個程序照書上的都不行,而復制教程的都好好,急啊,完全打擊學單片機的僅存的一點信心啊!!!!格式還是語法不行!!

哪位大哥知道,明燈引路,謝謝!

全部回復(26)
正序查看
倒序查看
fu-tao
LV.4
2
2011-08-19 21:18

0
回復
貼片機
LV.8
3
2011-08-19 21:19

先硬定確件是不是好的...

0
回復
2011-08-19 21:25

為什么不用C編寫呢?

0
回復
fu-tao
LV.4
5
2011-08-19 21:27
@高等數學
為什么不用C編寫呢?

硬件是好的,可確定,51單片機,難道就沒人知道怎么回事嗎

0
回復
貼片機
LV.8
6
2011-08-19 21:40
@fu-tao
硬件是好的,可確定,51單片機,難道就沒人知道怎么回事嗎
建議你到這里去問:www.daxia.com/bibis  .
0
回復
2011-08-19 22:10
@fu-tao
硬件是好的,可確定,51單片機,難道就沒人知道怎么回事嗎

有沒有燒錄成功過?

0
回復
fu-tao
LV.4
8
2011-08-20 00:00
@高等數學
有沒有燒錄成功過?
天啊,肯定的啦,哎,失望
0
回復
2011-08-20 09:11
@fu-tao
天啊,肯定的啦,哎,失望

你還是到單片機論壇問問吧。

不知道你51是什么樣的,我用的是PIC,每次燒錄完了之后,必須拔了ICD2與目標板的連線,之后才可以出結果。

0
回復
貼片機
LV.8
10
2011-08-20 13:33
@高等數學
你還是到單片機論壇問問吧。不知道你51是什么樣的,我用的是PIC,每次燒錄完了之后,必須拔了ICD2與目標板的連線,之后才可以出結果。
主要是寫完程序后復位引腳電位被拉高了.編譯軟件上面有一個快捷按鈕,一按就行了...
0
回復
kinto
LV.5
11
2011-08-20 13:52
@貼片機
主要是寫完程序后復位引腳電位被拉高了.編譯軟件上面有一個快捷按鈕,一按就行了...

頭文件有沒有包含,復位電路確認了沒有,晶振有沒有起振?

0
回復
2011-08-20 14:14
@kinto
頭文件有沒有包含,復位電路確認了沒有,晶振有沒有起振?
單片機大家也都會啊 厲害啊
0
回復
konglingzhi
LV.6
13
2011-08-20 14:18
都沒有初始化程序模塊,你這東西能跑的起來才見鬼了,R6,R7在RAM的哪里,都沒定義
0
回復
fu-tao
LV.4
14
2011-08-20 15:08
@konglingzhi
都沒有初始化程序模塊,你這東西能跑的起來才見鬼了,R6,R7在RAM的哪里,都沒定義
教書上是這樣寫的啊,要不哪位哥手修改下讓我們好好學學,期待天使出現中……
0
回復
fu-tao
LV.4
15
2011-08-20 15:14
@fu-tao
教書上是這樣寫的啊,要不哪位哥手修改下讓我們好好學學,期待天使出現中……

 ORG 0000H     ;程序從此地址開始運行
 LJMP MAIN     ;跳轉到 MAIN 程序處

 ORG 030H     ;MAIN 從030H處開始
MAIN: 
   MOV P2 ,#00H    ;P2為低電平 LED 燈亮
 ACALL DELAY  ;調用延時子程序
 MOV P2 ,#0FFH
 ACALL DELAY
 AJMP MAIN        ;跳轉到主程序處

DELAY: MOV R5,#04H    ;將立即數傳給寄存器R5
F3: MOV R6,#0FFH
F2: MOV R7,#0FFH
F1: DJNZ R7,F1        ;若為0程序向下執行,若不為0程序跳轉到
 DJNZ R6,F2
 DJNZ R5,F3
 RET
 END

 

上面這個就燒進去行,為什么呢?

0
回復
2011-08-20 16:17
@fu-tao
 ORG0000H    ;程序從此地址開始運行 LJMPMAIN    ;跳轉到MAIN程序處 ORG030H    ;MAIN從030H處開始MAIN:   MOVP2,#00H   ;P2為低電平LED燈亮 ACALLDELAY  ;調用延時子程序 MOVP2,#0FFH ACALLDELAY AJMPMAIN       ;跳轉到主程序處DELAY: MOVR5,#04H   ;將立即數傳給寄存器R5F3: MOVR6,#0FFHF2: MOVR7,#0FFHF1: DJNZR7,F1       ;若為0程序向下執行,若不為0程序跳轉到 DJNZR6,F2 DJNZR5,F3 RET END 上面這個就燒進去行,為什么呢?

請將

      MOV R7,#250;
  D1:MOV R6,#250

改為

       MOV R7,#0FFH;
  D1:MOV R6,#0FFH

看看

0
回復
2011-08-20 16:22
@konglingzhi
都沒有初始化程序模塊,你這東西能跑的起來才見鬼了,R6,R7在RAM的哪里,都沒定義
R6,R7這個不用定義,默認在第一工作寄存器組,字節地址為00H到07H
0
回復
835041560
LV.5
18
2011-08-20 21:26

調用延時子程序有誤,上面調用時用DELAY,而定義時用DElAY,兩者的"L"大小寫要區分.

0
回復
qinzhendong
LV.4
19
2011-08-21 07:38
@835041560
調用延時子程序有誤,上面調用時用DELAY,而定義時用DElAY,兩者的"L"大小寫要區分.

同意樓上  L與l

0
回復
無衣
LV.6
20
2011-08-21 12:28

標號是有點問題,你調用的是DELAY,子程序卻是DElAY,不過在KEIL中,可禁用大小寫敏感,估計這不會引起錯誤。

真正的錯誤是:

    單片機在執行LCALL指令時,會產生棧操作,首先要把下一條指令的地址壓入堆棧,同時棧指針加1,而你在子程序中使用了R7,R7在0區的地址是07H,復位時,SP堆棧指針指向它,而你在子程序中改變了R7的值,所以,被調用的子程序不能正常的返回,導致程序跑飛。只要在MAIN的第一行加上MOV SP,#60H;使SP指向60H單元就行了。

0
回復
zvszcs
LV.12
21
2011-08-21 20:41
@無衣
標號是有點問題,你調用的是DELAY,子程序卻是DElAY,不過在KEIL中,可禁用大小寫敏感,估計這不會引起錯誤。真正的錯誤是:   單片機在執行LCALL指令時,會產生棧操作,首先要把下一條指令的地址壓入堆棧,同時棧指針加1,而你在子程序中使用了R7,R7在0區的地址是07H,復位時,SP堆棧指針指向它,而你在子程序中改變了R7的值,所以,被調用的子程序不能正常的返回,導致程序跑飛。只要在MAIN的第一行加上MOVSP,#60H;使SP指向60H單元就行了。
路過,對程序一點不懂
0
回復
konglingzhi
LV.6
22
2011-08-22 09:21
@fu-tao
 ORG0000H    ;程序從此地址開始運行 LJMPMAIN    ;跳轉到MAIN程序處 ORG030H    ;MAIN從030H處開始MAIN:   MOVP2,#00H   ;P2為低電平LED燈亮 ACALLDELAY  ;調用延時子程序 MOVP2,#0FFH ACALLDELAY AJMPMAIN       ;跳轉到主程序處DELAY: MOVR5,#04H   ;將立即數傳給寄存器R5F3: MOVR6,#0FFHF2: MOVR7,#0FFHF1: DJNZR7,F1       ;若為0程序向下執行,若不為0程序跳轉到 DJNZR6,F2 DJNZR5,F3 RET END 上面這個就燒進去行,為什么呢?
差別就是R6,R7進行的初始化,即F3: MOV R6,#0FFH
F2: MOV R7,#0FFH。 另你第一個程序,怎么調MOV P1,0,這個是錯誤,0好象不識別吧,要寫#00H,很久不碰單片機,很多都忘了,呵呵,編譯程序時沒有顯示錯誤嗎
0
回復
2011-08-23 23:31
@zvszcs
路過,對程序一點不懂
懂兩點 三點就可以啦
0
回復
yousuoqiu
LV.2
24
2011-08-24 09:38
路過,之前寫過,好久沒弄這個了。。。
0
回復
cfbbao
LV.4
25
2011-08-24 10:01
@無衣
標號是有點問題,你調用的是DELAY,子程序卻是DElAY,不過在KEIL中,可禁用大小寫敏感,估計這不會引起錯誤。真正的錯誤是:   單片機在執行LCALL指令時,會產生棧操作,首先要把下一條指令的地址壓入堆棧,同時棧指針加1,而你在子程序中使用了R7,R7在0區的地址是07H,復位時,SP堆棧指針指向它,而你在子程序中改變了R7的值,所以,被調用的子程序不能正常的返回,導致程序跑飛。只要在MAIN的第一行加上MOVSP,#60H;使SP指向60H單元就行了。
頂這個~~
0
回復
無衣
LV.6
26
2011-08-24 22:55
@cfbbao
頂這個~~
初學者常遇到的問題。
0
回復
fengxunshi
LV.5
27
2011-08-25 12:18
@yousuoqiu
路過,之前寫過,好久沒弄這個了。。。

非常常規 的51 匯編, 估計是 學校里的吧,呵,

你用什么片子跑的呀,設置不對還是

 燒進去,能不能運行 是兩碼事哦,

0
回復
主站蜘蛛池模板: 义乌市| 农安县| 阳泉市| 彰武县| 澄江县| 绥阳县| 商南县| 阳谷县| 汝城县| 临海市| 南充市| 讷河市| 新郑市| 康定县| 岚皋县| 临泽县| 阿拉尔市| 香港 | 兴义市| 广安市| 深水埗区| 广州市| 鹤峰县| 龙门县| 盈江县| 桦川县| 石柱| 开化县| 锦屏县| 杂多县| 营口市| 商水县| 喜德县| 宜黄县| 紫金县| 虎林市| 策勒县| 美姑县| 镇宁| 偏关县| 三穗县|