EM78447的程式編輯問題~可麻煩前輩可幫幫小弟指點迷津 |
尚未結案
|
p76g89power
一般會員 發表:2 回覆:0 積分:0 註冊:2008-07-21 發送簡訊給我 |
前輩大大你們好:
小弟最近剛接觸EM78447的單晶片,在設計程式上有個地方不知該如何放入達成以下的動作,可請前輩大大給小弟一點指點~ 使用環境 : 小弟使用EM78447晶片的PORT7接4x4鍵盤,PORT5接一科74LS244晶片再接到兩組共8顆共陰七段顯示器的A~G角, 而PORT6是接到兩組共8顆共陰七段顯示器的各COM角 迷津問題: 1.小弟想按下按鍵1,8顆七段顯示器可以依序出現0~F 以下是小弟程式碼,請大大替小弟指點迷津~~謝謝!! ;---------------------------------------------------------------------------- STATUS == 0X03 ; PORT5 == 0X05 ; PORT6 == 0X06 ; PORT7 == 0X07 ; PTR == 0X0A ; COUNT == 0X0B ; TEST == 0X0C ; BUF == 0X1C ; ;---------------------------------------------------------------------------- ORG 0x0 START: MOV A,@0x11 ;┐ IOW 0xE ;┘禁能 WDT MOV A,@0X0 ;┐ IOW PORT5 ;├設定 PORT5 與 PORT6 為輸出模式 IOW PORT6 ;┘ MOV A,@0XF0 ;┐ IOW PORT7 ;┘設定 PORT7.0~3 為輸出模式 PORT7.4~7 為輸入 MOV A,@0X40 ;┐ MOV PORT5,A ;┘經由 PORT5 送出可點亮 'g' 節段的控制碼 40H AGAIN: MOV A,@0 ;┐ MOV PTR,A ;┘令位址指標 PTR = 0 MOV A,@0XFE ;┐ MOV TEST,A ;┘設定測試信號 TEST = FEH CALL SHOW_KEY ;呼叫可將按鍵碼轉成七段顯示碼的副程式 MOV A,@4 ;┐ MOV PTR,A ;┘令位址指標 PTR = 4 MOV A,@0XFD ;┐ MOV TEST,A ;┘設定測試信號 TEST = FDH CALL SHOW_KEY1 ;呼叫可將按鍵碼轉成七段顯示碼的副程式 MOV A,@8 ;┐ MOV PTR,A ;┘令位址指標 PTR = 8 MOV A,@0XFB ;┐ MOV TEST,A ;┘設定測試信號 TEST = FBH CALL SHOW_KEY2 ;呼叫可將按鍵碼轉成七段顯示碼的副程式 MOV A,@12 ;┐ MOV PTR,A ;┘令位址指標 PTR = 12 MOV A,@0XF7 ;┐ MOV TEST,A ;┘設定測試信號 TEST = F7H CALL SHOW_KEY3 ;呼叫可將按鍵碼轉成七段顯示碼的副程式 JMP AGAIN ;------------------------------------------------------------------------------------------------------------------ SHOW_KEY: MOV A,TEST ;┐ MOV PORT7,A ;┘經由 PORT7 送出測試信號 TEST MOV A,PORT7 ;經由 PORT7 讀取按鍵碼 MOV BUF,A ;將按鍵碼暫存於 BUF 中 MOV A,PTR ;┐ CALL KEY_TBL ;┘從 KEY_TBL 中抓取按鍵碼並存放於 A 中 SUB BUF,A ;然後與 BUF 中的按鍵碼做一比較 JBS STATUS,2 ;┐若狀態暫存器中的 Z=1,則跳至下一行指令 RET ;┘反之,則跳至 NEXT 執行 ;------------------------------------------------------------------------------------------------------------------ SHOW_KEY1: MOV A,TEST ;┐ MOV PORT7,A ;┘經由 PORT7 送出測試信號 TEST MOV A,PORT7 ;經由 PORT7 讀取按鍵碼 MOV BUF,A ;將按鍵碼暫存於 BUF 中 MOV A,PTR ;┐ CALL KEY_TBL ;┘從 KEY_TBL 中抓取按鍵碼並存放於 A 中 SUB BUF,A ;然後與 BUF 中的按鍵碼做一比較 JBS STATUS,2 ;┐若狀態暫存器中的 Z=1,則跳至下一行指令 RET ;┘反之,則跳至 NEXT 執行 ;------------------------------------------------------------------------------------------------------------------ SHOW_KEY2: MOV A,TEST ;┐ MOV PORT7,A ;┘經由 PORT7 送出測試信號 TEST MOV A,PORT7 ;經由 PORT7 讀取按鍵碼 MOV BUF,A ;將按鍵碼暫存於 BUF 中 MOV A,PTR ;┐ CALL KEY_TBL ;┘從 KEY_TBL 中抓取按鍵碼並存放於 A 中 SUB BUF,A ;然後與 BUF 中的按鍵碼做一比較 JBS STATUS,2 ;┐若狀態暫存器中的 Z=1,則跳至下一行指令 RET ;┘反之,則跳至 NEXT 執行 ;----------------------------------------------------------------------------------------------------------------- SHOW_KEY3: MOV A,TEST ;┐ MOV PORT7,A ;┘經由 PORT7 送出測試信號 TEST MOV A,PORT7 ;經由 PORT7 讀取按鍵碼 MOV BUF,A ;將按鍵碼暫存於 BUF 中 MOV A,PTR ;┐ CALL KEY_TBL ;┘從 KEY_TBL 中抓取按鍵碼並存放於 A 中 SUB BUF,A ;然後與 BUF 中的按鍵碼做一比較 JBS STATUS,2 ;┐若狀態暫存器中的 Z=1,則跳至下一行指令 RET ;┘反之,則跳至 NEXT 執行 ;---------------------------------------------------------------------------- KEY_TBL: TBL RETL 0XEE ;按鍵 0 的按鍵碼 RETL 0XDE ;按鍵 1 的按鍵碼 RETL 0XBE ;按鍵 2 的按鍵碼 RETL 0X7E ;按鍵 3 的按鍵碼 RETL 0XED ;按鍵 4 的按鍵碼 RETL 0XDD ;按鍵 5 的按鍵碼 RETL 0XBD ;按鍵 6 的按鍵碼 RETL 0X7D ;按鍵 7 的按鍵碼 RETL 0XEB ;按鍵 8 的按鍵碼 RETL 0XDB ;按鍵 9 的按鍵碼 RETL 0XBB ;按鍵 A 的按鍵碼 RETL 0X7B ;按鍵 B 的按鍵碼 RETL 0XE7 ;按鍵 C 的按鍵碼 RETL 0XD7 ;按鍵 D 的按鍵碼 RETL 0XB7 ;按鍵 E 的按鍵碼 RETL 0X77 ;按鍵 F 的按鍵碼 ;---------------------------------------------------------------------------- SEG7_TBL: TBL RETL 0X3F ;字型 0 的七段顯示碼 RETL 0X66 ;字型 1 RETL 0X7F ;字型 2 RETL 0X39 ;字型 3 RETL 0X06 ;字型 4 RETL 0X6D ;字型 5 RETL 0X6F ;字型 6 RETL 0X5E ;字型 7 RETL 0X5B ;字型 8 RETL 0X7D ;字型 9 RETL 0X77 ;字型 A RETL 0X79 ;字型 b RETL 0X4F ;字型 C RETL 0X07 ;字型 d RETL 0X7C ;字型 E RETL 0X71 ;字型 F ;---------------------------------------------------------------------------- ORG 0X0FFF ;ICE447 RESET 之後的起始位址 JMP START ;跳至 START 之處執行指令 編輯記錄
taishyang 重新編輯於 2008-12-29 17:23:38, 註解 歸類成[問題]‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |