![]() |
發布時間: 2020-5-25 08:36
正文摘要:這是我大二輔修計算機學院單片機的最終任務 上大學以來第一次獨立完成這樣的任務(大二下學期完成了這個任務)特別感謝我的伙伴Mr.關 @黑河豚 備注:代碼共300多行,難以忘記那時候和黑河豚天天打代碼,不過最終漂 ... |
請問一下,你的代碼是在哪個軟件運行的呢 |
唐吉坷德 發表于 2020-7-16 17:42 這是用于顯示數字和帶小數點的數字的表格,每一個數都代表著一個可以用于數碼管顯示的字符,如:“1,2,3,4等等” 可以了解一下數碼管顯示的原理 |
為什么有那個DispTable: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ,0BFH, 86H, 0DBH, 0CFH, 0E6H, 0EDH, 0FDH, 87H, 0FFH, 0EFH |
唐吉坷德 發表于 2020-7-1 12:08 這是創建proteus AT89C51工程自帶的代碼 8051.MCU定義了一些寄存器的名稱,更方便使用 ; 8051 processor definition file ; ============================== P0 DATA 080H SP DATA 081H DPL DATA 082H DPH DATA 083H PCON DATA 087H TCON DATA 088H TMOD DATA 089H TL0 DATA 08AH TL1 DATA 08BH TH0 DATA 08CH TH1 DATA 08DH P1 DATA 090H SCON DATA 098H SBUF DATA 099H P2 DATA 0A0H IE DATA 0A8H P3 DATA 0B0H IP DATA 0B8H PSW DATA 0D0H ACC DATA 0E0H B DATA 0F0H IT0 BIT 088H IE0 BIT 089H IT1 BIT 08AH IE1 BIT 08BH TR0 BIT 08CH TF0 BIT 08DH TR1 BIT 08EH TF1 BIT 08FH RI BIT 098H TI BIT 099H RB8 BIT 09AH TB8 BIT 09BH REN BIT 09CH SM2 BIT 09DH SM1 BIT 09EH SM0 BIT 09FH EX0 BIT 0A8H ET0 BIT 0A9H EX1 BIT 0AAH ET1 BIT 0ABH ES BIT 0ACH EA BIT 0AFH RXD BIT 0B0H TXD BIT 0B1H INT0 BIT 0B2H INT1 BIT 0B3H T0 BIT 0B4H T1 BIT 0B5H WR BIT 0B6H RD BIT 0B7H PX0 BIT 0B8H PT0 BIT 0B9H PX1 BIT 0BAH PT1 BIT 0BBH PS BIT 0BCH P BIT 0D0H OV BIT 0D2H RS0 BIT 0D3H RS1 BIT 0D4H F0 BIT 0D5H AC BIT 0D6H CY BIT 0D7H RESET CODE 000H EXTI0 CODE 003H TIMER0 CODE 00BH EXTI1 CODE 013H TIMER1 CODE 01BH SINT CODE 023H |
你好,在一開始定義常數的時候輪胎周長1.83是0B7H,計費的起步價8是0320H,超出的費用2.6是1AH,它們變換的程度不同,在十六進制——BCD碼——十進制的過程,小數點的位置是怎么控制到正確顯示結果的呢?小白實在不懂![]() |
$NOMOD51 $INCLUDE (8051.MCU) 具體指什么 初學小白 望大神指導一下 |
Jeff_BlindCat 發表于 2020-6-27 12:13 加油! |
1142892859 發表于 2020-6-26 15:01 啊!跑了一下發現確實有這個bug,交項目的時候沒發現,謝謝你提醒我這個bug! |
匯編菜鳥的菜鳥悄悄的來膜拜下,還是繼續先把俺滴C鼓搗明白吧。 |
里程超過10的時候費用溢出了吧 |
Hibari 發表于 2020-6-15 19:32 運行過程中: 調試-VSM signal generator 即可 |
Stranger-- 發表于 2020-6-12 12:36 不好意思,這一段十六進制變為BCD碼的代碼是我師傅統一提供的,說來慚愧,具體原理我還不清楚 這是師傅的原始代碼 ;如果有需要,認真仿真此程序 cDisplayBuffer EQU 30H ;在顯示的內容在30H-37H cDisplayBit EQU 38H ;當前顯示的位 cCount EQU 40H ORG 0000H LJMP Main Main: MOV 42H,#5BH ;把此兩內存改為其它值,分析44H,45H,46H的內容 MOV 43H,#4AH MOV R0,#42H ;42H為高位字節,43H為低位字節 MOV R1,#44H LCALL BinDec ;結果為6位BCD碼,仔細分析 44H,45H,46H的內容 SJMP $ ;---------------BinDec--------------------------- ; 把雙字節的十六進制數轉換為BCD碼 ; 輸入: R0 - 十六進制數的高字節地址 ; R1 - 轉換后BCD碼的高位地址 BinDec: CLR A MOV @R1,A INC R1 MOV @R1,A INC R1 MOV @R1,A PUSH 7 MOV R7,#16 BD1: CLR C INC R0 MOV A,@R0 RLC A MOV @R0,A DEC R0 MOV A,@R0 RLC A MOV @R0,A PUSH 1 MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A DEC R1 MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A DEC R1 MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A POP 1 DJNZ R7,BD1 POP 7 RET ;---------------BinDec--------------------------- END |
那個波形器怎么找啊 |
你好,請問一下為什么Bin那里的R7設置為24嗎 |
rofgmd 發表于 2020-5-29 15:31 里程思路:利用INT0號中斷在中斷進程中使得寄存器R3每中斷一次加一,加滿后向R4進位,然后乘以表示輪胎周長的常量Circumference,經過換算后就可以得到十進制的里程數,再將其轉移到相應的顯示內存中。 這段程序是將換算為10進制BCD碼的里程(45H,46H,47H)通過除以#10來取十位,個位,并且存入相應的顯示單元(34H,35H,36H,37H) |
你好,可以請想問一下存到內存那段程序的思路嘛,例如以下這段程序 nextMilage: MOV A,47H MOV B,#10H DIV AB MOV 37H,A MOV A,46H MOV B,#10H DIV AB MOV 36H,B ADD A,#10 MOV 35H,A MOV A,45H MOV B,#10H DIV AB MOV 34H,B RET |
yunshuayun 發表于 2020-5-25 18:19 嗯 知道的 哈哈 |
songxia8013 發表于 2020-5-25 15:32 哈哈,這只是用波形測試這個系統正不正常,顯示的速度只是來源于頻率,不是實際出租車的速度 |
這速度太快了,能跑到六七百公里每小時,這出租車是飛起來了嗎? |