|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
大俠幫忙看看這個程式有無問題 |
| 作者:keasen 欄目:單片機 |
電路圖如上: 功能要求如下:1.接通電源后上電復(fù)位,led不亮,蜂鳴器"嘀"一聲, 延遲0.5S后再"滴"一聲 "嘀"聲頻率4Khz,每次0.5S 2. 程序等待按鍵K1按下 3.K1按下后 蜂鳴器滴一聲,led點亮, 同時打開定時器0,等待一分鐘 4.每一分鐘就滴一聲 5. 9分鐘到了就"嘀"一聲, 延遲0.5S后再"滴"一聲然后關(guān)閉led,再等待K1按下 源程序如下: ORG 0000H AJMP START ORG 0008H START: MOV P1,#00000010B ;p1口清零,燈滅,開關(guān)置高電平 LCALL DIDI ; 發(fā)出嘀嘀聲 LCALL YANS1 ;延時0.5秒 LCALL DIDI ;再次嘀嘀 ;;按鍵檢測子程序; JAC: MOV A,P1.1;將開關(guān)量放入a JZ KSS ;A等于0跳到整機kss開始工作 AJMP JAC ;A不等于0繼續(xù)檢測開關(guān) ;;整機工作程序;; KSS: LCALL DIDI ;發(fā)出滴一聲 SETB P1.0 ;把led點亮 ;;開始定時每分鐘鳴叫一聲九分鐘關(guān)機;; EFEN: MOV TMOD,#00100001B ;T0工作方式1 T1方式2 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 SETB TR0 ;打開定時器0 JTF: JNB TF0,EFEN;TFO等于0跳到efen等于1繼續(xù)執(zhí)行 CLR TF0 ;定時器溢出標(biāo)志清零 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 MOV R0,#14H;將立即數(shù)20放入R0 MOV R1,#9H; 將立即數(shù)9放入R1 DJNZ R0,JTF;R0減1不等0繼續(xù)檢測 LCALL DIDI ;一分鐘到了就發(fā)出滴一聲 DJNZ R1,JTF;9分鐘到了嗎?不到繼續(xù)檢測 LCALL DIDI;滴一聲 LCALL YANS1 ;延時0.5s LCALL DIDI ;再次滴一聲 CLR P1.0 ;把燈關(guān)掉 LJMP JAC ;;滴一聲子程序; DIDI: MOV TH1,#0CDH; TH1預(yù)置250次循環(huán) MOV R2,#28H; 40次數(shù) MOV R3,#32H ; 50次 SETB TR1 ;打開定時器1 JTF1: JNB TF1,JTF1; TF1等于0跳到JTF1等于1繼續(xù)執(zhí)行 CLR TF1 ;清除定時器1溢出標(biāo)志 DJNZ R3,JFT1 ;定時器1溢出10次達到0.25ms就繼續(xù)否則再檢測 CLP P1.2 ;蜂鳴器響 DJNZ R2,JTF1;夠40次繼續(xù),不夠再檢測 DJNZ R3,JTF1 ;夠50次就返回,不夠繼續(xù) RET ;;延時0.5S子程序; YANS1: MOV R4,#0C8H ;將立即數(shù)200裝入R4 MOV R5,#0FAH ;將立即數(shù)250裝入R5 D1: DJNZ R4,D1 ; DJNZ R5,D1 RET END 匯編時候提示如下錯誤不知什么原因引起: Build target 'Target 1' assembling ZAOLIAN.A51... ZAOLIAN.A51(5): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(10): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(15): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(17): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(18): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(19): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(20): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(21): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(22): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(23): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(24): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(33): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(38): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(41): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(42): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(43): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(44): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(45): error A9: SYNTAX ERROR ZAOLIAN.A51(45): error A9: SYNTAX ERROR Target not created 謝謝大家,希望各位高人不吝指教 |
| 2樓: | >>參與討論 |
| 作者: 慕容帝 于 2005/8/15 16:56:00 發(fā)布:
我簡單的看了一下程序。其他的我也是外行。找到3處錯誤。第一個:JAC: MOV A,P1.1;將開關(guān)量放入a JAC: MOV指令不能這樣用的哦~!你可以寫成mov c,p1.1下面的改成判斷c 值的。第二個:DJNZ R3,JFT1 ;定時器1溢出10次達到0.25ms就繼續(xù)否則再檢測 ,你自己找一下JFT1在哪里哦~! 第三個:CLP P1.2 ;蜂鳴器響,呵呵。指令輸入錯了哦。CPL哦。你改了試試吧。 還有不知道你用的什么編譯器,我用偉福6000還不錯哦!~~![]() ![]() ![]() |
|
| 3樓: | >>參與討論 |
| 作者: keasen 于 2005/8/16 9:44:00 發(fā)布:
謝謝版主的指點我修改一下試試^_^ ![]() |
|
| 4樓: | >>參與討論 |
| 作者: xlm333 于 2005/8/16 10:57:00 發(fā)布:
首先硬件有錯; 然后再說軟件. |
|
| 5樓: | >>參與討論 |
| 作者: keasen 于 2005/8/16 11:04:00 發(fā)布:
按照版主大俠的致電修改之后還是有如下的錯誤: Build target 'Target 1' assembling ZAOLIAN.A51... ZAOLIAN.A51(5): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(10): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(15): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(17): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(18): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(19): error A45: UNDEFINED SYMBOL ZAOLIAN.A51(19): error A9: SYNTAX ERROR ZAOLIAN.A51(19): error A9: SYNTAX ERROR ZAOLIAN.A51(19): error A3: ILLEGAL CHARACTER ZAOLIAN.A51(19): error A3: ILLEGAL CHARACTER Target not created 我翻譯過來后是: 建造目標(biāo)‘zaolian1’ 集合ZAOLIAN.A51 ... ZAOLIAN.A51 ( 5 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 10 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 15 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 17 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 18 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 19 ): 差錯A45: 未定義的符號 ZAOLIAN.A51 ( 19 ): 差錯A9: 句法差錯 ZAOLIAN.A51 ( 19 ): 差錯A9: 句法差錯 ZAOLIAN.A51 ( 19 ): 差錯A3: 不合法的性格 ZAOLIAN.A51 ( 19 ): 差錯A3: 不合法的性格 目標(biāo)不建立 不知又是什么原因引起? 那位大哥有錯誤代碼 比如A9代表什么,A3代表什么,A45代表什么的.....?困惑啊 希望版主再次指教,謝謝! |
|
| 6樓: | >>參與討論 |
| 作者: 慕容帝 于 2005/8/16 11:27:00 發(fā)布:
下面的是我在你原程序基礎(chǔ)上修改的~!我在偉福6000下編譯通過了的程序~! ORG 0000H AJMP START ORG 0003H ;ORG 0008H 這里是外部中斷入口1 最好寫成0003H START: MOV P1,#00000010B ;p1口清零,燈滅,開關(guān)置高電平 LCALL DIDI ; 發(fā)出嘀嘀聲 LCALL YANS1 ;延時0.5秒 LCALL DIDI ;再次嘀嘀 ;;按鍵檢測子程序; JAC: MOV c,p1.1 ;將開關(guān)量放入a JNC KSS ;A等于0跳到整機kss開始工作 AJMP JAC ;A不等于0繼續(xù)檢測開關(guān) ;;整機工作程序;; KSS: LCALL DIDI ;發(fā)出滴一聲 SETB P1.0 ;把led點亮 ;;開始定時每分鐘鳴叫一聲九分鐘關(guān)機;; EFEN: MOV TMOD,#00100001B ;T0工作方式1 T1方式2 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 SETB TR0 ;打開定時器0 JTF: JNB TF0,EFEN;TFO等于0跳到efen等于1繼續(xù)執(zhí)行 CLR TF0 ;定時器溢出標(biāo)志清零 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 MOV R0,#14H;將立即數(shù)20放入R0 MOV R1,#9H; 將立即數(shù)9放入R1 DJNZ R0,JTF;R0減1不等0繼續(xù)檢測 LCALL DIDI ;一分鐘到了就發(fā)出滴一聲 DJNZ R1,JTF;9分鐘到了嗎?不到繼續(xù)檢測 LCALL DIDI;滴一聲 LCALL YANS1 ;延時0.5s LCALL DIDI ;再次滴一聲 CLR P1.0 ;把燈關(guān)掉 LJMP JAC ;;滴一聲子程序; DIDI: MOV TH1,#0CDH; TH1預(yù)置250次循環(huán) MOV R2,#28H; 40次數(shù) MOV R3,#32H ; 50次 SETB TR1 ;打開定時器1 JTF1: JNB TF1,JTF1; TF1等于0跳到JTF1等于1繼續(xù)執(zhí)行 CLR TF1 ;清除定時器1溢出標(biāo)志 DJNZ R3,Jtf1 ;定時器1溢出10次達到0.25ms就繼續(xù)否則再檢測 CPL P1.2 ;CLP P1.2 ;蜂鳴器響 沒有CLP這個指令吧 DJNZ R2,JTF1;夠40次繼續(xù),不夠再檢測 DJNZ R3,JTF1 ;夠50次就返回,不夠繼續(xù) RET ;;延時0.5S子程序; YANS1: MOV R4,#0C8H ;將立即數(shù)200裝入R4 MOV R5,#0FAH ;將立即數(shù)250裝入R5 D1: DJNZ R4,D1 ; DJNZ R5,D1 RET END |
|
| 7樓: | >>參與討論 |
| 作者: 慕容帝 于 2005/8/16 11:30:00 發(fā)布:
1:JAC: MOV c,p1.1 ;將開關(guān)量放入a JNC KSS ;A等于0跳到整機kss開始工作 2: DJNZ R3,Jtf1 ;定時器1溢出10次達到0.25ms就繼續(xù)否則再檢測 3:CPL P1.2 ;CLP P1.2 ;蜂鳴器響 沒有CLP這個指令吧 就這3處。具體程序執(zhí)行沒有查看~!! ![]() ![]() |
|
| 8樓: | >>參與討論 |
| 作者: xlm333 于 2005/8/16 11:51:00 發(fā)布:
ORG 0000H AJMP START ORG 0100H START: MOV P1,#00000010B ;p1口清零,燈滅,開關(guān)置高電平 LCALL DIDI ; 發(fā)出嘀嘀聲 LCALL YANS1 ;延時0.5秒 LCALL DIDI ;再次嘀嘀 ;;按鍵檢測子程序; JAC: ANL P1,#00000010B MOV A,P1;將開關(guān)量放入a JZ KSS ;A等于0跳到整機kss開始工作 AJMP JAC ;A不等于0繼續(xù)檢測開關(guān) ;;整機工作程序;; KSS: LCALL DIDI ;發(fā)出滴一聲 SETB P1.0 ;把led點亮 ;;開始定時每分鐘鳴叫一聲九分鐘關(guān)機;; EFEN: MOV TMOD,#00100001B ;T0工作方式1 T1方式2 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 SETB TR0 ;打開定時器0 MOV R0,#14H;將立即數(shù)20放入R0 MOV R1,#9H; 將立即數(shù)9放入R1 JTF: JNB TF0,JTF;TFO等于0跳到$ CLR TF0 ;定時器溢出標(biāo)志清零 MOV TH0,#3CH ; MOV TL0,#0B0H;定時器0裝入初值15536 DJNZ R0,JTF;R0減1不等0繼續(xù)檢測 LCALL DIDI ;一分鐘到了就發(fā)出滴一聲 DJNZ R1,JTF;9分鐘到了嗎?不到繼續(xù)檢測 LCALL DIDI;滴一聲 LCALL YANS1 ;延時0.5s LCALL DIDI ;再次滴一聲 CLR P1.0 ;把燈關(guān)掉 LJMP JAC ;;滴一聲子程序; DIDI: MOV TH1,#0CDH; TH1預(yù)置250次循環(huán) MOV R2,#28H; 40次數(shù) MOV R3,#32H ; 50次 SETB TR1 ;打開定時器1 JTF1: JNB TF1,JTF1; TF1等于0跳到JTF1等于1繼續(xù)執(zhí)行 CLR TF1 ;清除定時器1溢出標(biāo)志 DJNZ R3,JFT1 ;定時器1溢出10次達到0.25ms就繼續(xù)否則再檢測 CLP P1.2 ;蜂鳴器響 DJNZ R2,JTF1;夠40次繼續(xù),不夠再檢測 DJNZ R3,JTF1 ;夠50次就返回,不夠繼續(xù) RET ;;延時0.5S子程序; YANS1: MOV R4,#0C8H ;將立即數(shù)200裝入R4 MOV R5,#0FAH ;將立即數(shù)250裝入R5 D1: DJNZ R4,D1 ; DJNZ R5,D1 RET END 注:子程序未看. |
|
| 9樓: | >>參與討論 |
| 作者: 慕容帝 于 2005/8/16 12:01:00 發(fā)布:
3:CPL P1.2 ;CLP P1.2 ;蜂鳴器響 沒有CLP這個指令吧 這個可能是CLR 呵呵 |
|
| 10樓: | >>參與討論 |
| 作者: keasen 于 2005/8/18 8:56:00 發(fā)布:
按照各位大哥滴指示大部分問題沒有了,不過確產(chǎn)生了如下致命錯誤:不知又要如何解決了: "ZAOLIAN.obj" TO "0001" RAMSIZE(256) *** FATAL ERROR L218: NOT AN OBJECT FILE FILE: STARTUP.obj Target not created |
|
| 11樓: | >>參與討論 |
作者: 慕容帝 于 2005/8/18 10:35:00 發(fā)布:
我英文不好。但是上面的問題好象不是程序問題了。是你在使用編譯器出現(xiàn)的問題吧?? ![]() ![]() |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |