按照書上打卻出現BUG~(新手發問, 抱歉) |
缺席
|
skywindsea1
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-25 發送簡訊給我 |
請問板上各位,小弟我初學8051,由於學校專題我負責的部份是用8051控制馬達
但是系上老師並不專長於此項,因此只能買些書回來自修 而最近我要寫出一個可以用8051去控制馬達走幾步的程式 我也找到ㄧ本書上面有寫可以利用8051上的鍵盤去控制步數 1.ㄧ開始是用它光碟原本有的C語言來做燒錄 可是出來後為什麼8051鍵盤按下去後,在8051上顯示的並非那個數字,而數字也會亂跳呢??? 2.後來我去拿了另一本書是用組語寫的,我也按照他書上面的指令全部KEY完,可是在組譯時卻出現錯誤 大概是出現語法錯誤或者是expression錯誤之類的 可是我又重新檢查過程式,發現沒有KEY錯~ 所以想請問怎麼會發生這種情形呢? 編輯記錄
skywindsea1 重新編輯於 2007-10-12 17:06:11, 註解 無‧
skywindsea1 重新編輯於 2007-10-13 21:44:03, 註解 (附上原始檔程式碼)‧ skywindsea1 重新編輯於 2007-10-14 12:25:25, 註解 無‧ skywindsea1 重新編輯於 2007-10-14 12:29:34, 註解 無‧ |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
1> 請先看過版規
2> 沒人知道你寫什麼程式, 也沒人知道你硬體怎麼接, 更沒人知道你用那顆chip. 大家不是神仙, 怎麼知道你的問題在哪裡. 3> 照書key, 請用與書上相同的 compiler 及軟體. 否則出現錯誤是可以預期的. 但是一定會有錯誤訊息告訴你那一行錯或錯在那邊.請努力一下.
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
bernie_w39
資深會員 發表:3 回覆:199 積分:280 註冊:2007-10-07 發送簡訊給我 |
|
skywindsea1
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-25 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
skywindsea1
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-25 發送簡訊給我 |
抱歉,在此附上原始程式碼
另外,板子的CPU要如何去查看為哪個型號呢??? 謝謝 [code delphi] CNT1 EQU 30H CNT2 EQU 31H BUFFER EQU 32H G REG P1.6 R REG P1.7 STEP EQU 41H COUNT EQU 42H SPEED EQU 43H C1 REG 0 C2 REG 1 DIRECT REG 2 SCANLINE EQU 44H COLS EQU 45H KEYDATA EQU 46H KEYTEMP EQU 47H ZERO EQU 48H ONE EQU 49H ORG 00H AJMP START ORG 0BH AJMP TIMER0 ORG 1BH AJMP TIMER1 START: MOV SP,#60H ACALL INIT LOOP: ACALL IS_ZERO ACALL BCD2DSP MOV A,#-1 XCH A,KEYDATA CJNE A,#-1,L0 SJMP LOOP L0: CJNE A,#AH,L1 CLR TR1 SETB G SETB R SJMP LOOP L1: CJNE A,#BH,L2 JB TR1,LOOP MOV CNT1,#0 MOV CNT2,#0 SJMP LOOP L2: CJNE A,#CH,L3 JNB R,LOOP CLR G SETB R CLR DIRECT SETB TR1 SJMP LOOP L3: CJNE A,#DH,L4 JNB G,LOOP SETB G CLR R SETB DIRECT SETB TR1 SJMP LOOP L4: CJNE A,#EH,L5 MOV A,SPEED CLR C SUBB A,#10 CJNE A,#10,L41 L41: JC LOOP MOV SPEED,A SJMP LOOP L5: CJNE A,#FH,L6 MOV A,SPEED ADD A,#10 CJNE A,#200,L51 L51: JNC LOOP MOV SPEED,A SJMP LOOP L6: JB TR1,LOOP ACALL STORE SJMP LOOP INIT: MOV SCANLINE,#11110111B MOV COLS,#0 MOV KEYDATA,#-1 MOV KEYTEMP,#-1 MOV ZERO,#0 MOV ONE,#1 MOV TMOD,#11H SETB EA SETB ET0 SETB ET1 MOV TH0,#>(65536-2000) MOV TL0,#<(65536-2000) MOV TH1,#>(65536-5000) MOV TL1,#<(65536-5000) MOV SPEED,#100 MOV COUNT,SPEED MOV DPTR,#TABLE MOV CNT1,#0 MOV CNT2,#0 MOV STEP,#11H SETB G SETB R SETB TR0 RET IS_ZERO PUSH A MOV A,CNT2 XRL A,#0 JNZ J1 MOV A,CNT1 XRL A,#0 JNZ J1 SETB G SETB R CLR TR1 J1: POP A RET ; STORE PUSH A XCH A,CNT2 SWAP A MOV R5,A ANL A,#F0H ORL A,CNT2 XCH A,CNT2 MOV A,R5 ANL A,#0FH XCH A,CNT1 SWAP A ANL A,#F0H ORL A,CNT1 XCH A,CNT1 POP A RET ; BCD2DSP: PUSH A MOV R1,#BUFFER MOV A,CNT1 SWAP A ANL A,#0FH MOV @R1,A INC R1 MOV A,CNT1 ANL A,#0FH MOV @R1,A INC R1 MOV A,CNT2 SWAP A ANL A,#0FH MOV @R1,A INC R1 MOV A,CNT2 ANL A,#0FH MOV @R1,A POP A RET ; DISPLAY: PUSH A MOV A,#BUFFER ADD A,COLS MOV R0,A MOV A,@R0 MOVC A,@A DPTR MOV P2,A D1: POP A RET ; TIMER0: PUSH A MOV TH0,#>(65536-2000) MOV TL0,#<(65536-2000) ACALL KEYSCAN POP A RET1 ; TIMER1: PUSH A MOV TH1,#>(65536-5000) MOV TL1,#<(65536-5000) DJNZ COUNT,T12 MOV COUNT,SPEED MOV A,STEP JB DIRECT,REV RL A SJMP T11 REV: RR A T11: MOV STEP,A ANL A,#0FH ANL P1,#F0H ORL P1,A CLR C MOV A,CNT2 SUBB A,#1 ACALL DS MOV CNT2,A MOV A,CNT1 SUBB A,#0 ACALL DS MOV CNT1,A T12: POP A RET1 ; DS: PUSH PSW PUSH A CLR C1 CLR C2 JNB AC,S1 SETB C1 S1: JNB CY,S2 SETB C2 S2: ANL A,#0FH CLR C SUBB A,#0AH JB CY,S3 SETB C1 S3: POP A PUSH A ANL A,#F0H CLR C SUBB A,#A0H JB CY,S4 SETB C2 S4: POP A JNB C1,S5 CLR C SUBB A,#06H S5: JNB C2,S6------>此行出現Undefined Symbol (Pass-2) CLR C SUBB A,#60H S6: POP PSW RET ; KEYSCAN: PUSH A ------>此行出現Expression Type Does Not Match Instruction MOV A,SCANLINE MOV P3,A MOV A,P3 ANL A,#F0H ------>此行出現Undefined Symbol (Pass-2) MOV R3,#4 ROW: SETB C RLC A JNC KEYIN DJNZ R3,ROW JMP K3 KEYIN: MOV ONE,#0 MOV A,R3 DEC A XRL A,#00000011B MOV R3,A MOV A,COLS RL A RL A ORL A,R3 CJNE A,KEYTEMP,K2 MOV A,ZERO CJNE A,#5,K1 SJMP K3 K1: INC ZERO MOV A,ZERO CJNE A,#5,K3 MOV A,KEYTEMP MOV KEYDATA,A SJMP K3 K2: MOV KEYTEMP,A MOV ZERO,#1 K3: ACALL DISPLAY MOV A,SCANLINE RR A MOV SCANLINE,A INC COLS MOV A,COLS CJNE A,#4,K4 MOV COLS,#0 MOV SCANLINE,#11110111B INC ONE MOV A,ONE CJNE A,#5,K4 MOV ZERO,#0 MOV KEYTEMP,#-1 MOV KEYDATA,#-1 K4: POP A ------>此行出現Expression Type Does Not Match Instruction RET ; TABLE DB 01H ------>此行出現Symbol Error DB 4FH DB 12H DB 06H DB 4CH DB 24H DB 20H DB 0FH DB 00H DB 04H END [/code] 此程式的功能4*4矩陣型鍵盤控制步進馬達的轉動方向,速度以及步進數,而按鍵0~9是去設定步進數
編輯記錄
skywindsea1 重新編輯於 2007-10-14 12:35:43, 註解 無‧
skywindsea1 重新編輯於 2007-10-14 12:37:26, 註解 無‧ skywindsea1 重新編輯於 2007-10-14 12:38:27, 註解 無‧ |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |