请问一下,你的代码是在哪个软件运行的呢 |
唐吉坷德 发表于 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 哈哈,这只是用波形测试这个系统正不正常,显示的速度只是来源于频率,不是实际出租车的速度 |
这速度太快了,能跑到六七百公里每小时,这出租车是飞起来了吗? |