Здравствуйте!!! Господа
Подскажите как преобразовать в BCD формат для отображения на LCD в этой программе я не знаю ПОМОГИТЕ ПОЖАЛУЙСТА!!!
мне надо от 0 до 9999. Пишу на асме
CODE
1.;********************************************************************
*****
2. ;* *
3. ;* Convert unsigned 16 bit to 5 digit ASCII *
4. ;* *
5. ;* *
6. ;* *
7. ;*************************************************************************
8. ;
9. ;Входной: R17, R16 = 16 bit значение 0… 65535
10.; выход: R20, R18, R19, R17, R16 = 5 цифр (ASCII)
11.; цикл: 20… 170
12.
13.push temp
14.
15.LCDCLR ;очистка LCD
16.LCD_COORD 1,0;
17.
18.pop temp
19.
20. bin16_ascii:
21.
22.
23.
24.inc temp
25. ldi r17,0
26.
27.
28.
29.; ldi r21, 10 + ’0′
30.; _bcd0: dec r21
31.; subi r16, low(-100000) ;+100000
32.; sbci r17, high(-100000)
33.; brcs _bcd0
34.
35. ldi r20, -1 + ’0′
36. _bcd1: inc r20
37. subi r16, low(10000) ;-10000
38. sbci r17, high(10000)
39. brcc _bcd1
40.
41. ldi r19, 10 + ’0′
42. _bcd2: dec r19
43. subi r16, low(-1000) ;+1000
44. sbci r17, high(-1000)
45. brcs _bcd2
46.
47. ldi r18, -1 + ’0′
48. _bcd3: inc r18
49. subi r16, low(100) ;-100
50. sbci r17, high(100)
51. brcc _bcd3
52.
53. ldi r17, 10 + ’0′
54. _bcd4: dec r17
55. subi r16, -10 ;+10
56. brcs _bcd4
57.
58. subi r16, -’0′
59.
60. ;————————————————————————-
61.
62. rcall RD_DATA;
63.
64.
65.
66.
67.reti ;выход
Сообщение отредактировал IgorKossak - Jul 15 2013, 07:07
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!