텔레비젼 - 89c2051.asm에 대한 튜너 -> C 소스?

Z

z543g

Guest
;************************************************* *********
; * TUN_LED.ASM V1.0 *
; * Ansteuerung 데 노키아 - TV는 - 5827 튜너 (의 I2C - 버스) mittels *
; * 데 Mikrocontrollers AT89C2051 *
; * Softwareversion fuer의 LED - 디스플레이 (mit SAA1064) *
; * 맛 C / P를 : Umschaltung zwischen Anzeige 데르 PROGRAMM - *
; * (Prxx) 데르 Kanalnummer (Chxx
und bzw. CCxx) *
; * Tasten und - : PROGRAMM - bzw.내일 이야기합시다 Kanalnummer - *
; * schalten : Pr00 두번 Pr49 (nach Einschalten Pr01), *
; * Ch00 묻는 Ch69 sowie CC01 두번 CC20 (Sonderkanaele) *
;************************************************* *********
; * 세계의 전자 *
; * http://www.woe.de.vu *
; * (C) 화가, 1999 *
;************************************************* *********

; Anschluss 데르 Tasten :
; P1.7 6 5 4 3 2 1 0
; C / P를 -

; P3.5월 7일
; SDA는 SCLt_cp equ p1.4; 맛 C / P를
t_plus equ p1.3; 맛 플러스
t_minus equ p1.2; 맛 마이너스야

sda를 equ p3.7
SCL equ p3.5i2c_ack_in equ 0; vom 슬레이브 인정 gesendetes - 비트
i2c_ack_out equ 1; an 서재 슬레이브 촉산 sendendes 인정 - 비트
; jeweils 0 = 응답, 1 = kein 응답

equ 2 prg; 신고 fuer 채널 / 프로그램 : 0 -> 벼., 1 -> PRG.
cc_nr equ 3; 신고 fuer Sonderkanaele (참조) : 0 -> 벼., 1 -> 참조.전화 ms100; Einschaltverzoegerung

setb i2c_ack_out
setb i2c_ack_in

mov 인 R7, # 1; PRG.Nr.
mov 인 R6, # 0; 벼.Nr.

setb prg
mov 인 R0, # 40
전화 i2c_start
mov 인, # 0a0h
전화 i2c_send
mov 인, # 0
전화 i2c_send
전화 i2c_start
mov 인, # 0a1h
전화 i2c_send
CLR은 i2c_ack_out
init_prg :
전화 i2c_read

vgl, # 90, cjne; Wenn 벼.> 89 Dann 채널 .= 0
vgl :
JC는 vgl_end
a CLR을
vgl_end :

mov 인 R0,
@타운 R0
cjne R0, # 89,
11 명의
setb i2c_ack_out
jmp init_prg
이이 :
cjne R0, # 90, init_prg
전화 i2c_stop

전화 get_ch
전화 disp_led
전화 튜너

abfrage :
전화 ms10
jnb t_minus, 마이너스
jnb t_plus, 더하기
jnb t_cp,에서 cp
jmp abfrage마이너스 :
jnb prg, chan_down
prg_down :
cjne R7, # 0, r7_dec
mov 인 R7, # 49
jmp 940
r7_dec :
12월 R7
940 :
전화 get_ch
전화 disp_led
전화 튜너
전화 ms10
minus_wait :
jnb t_minus, minus_wait
jmp abfrage더하기 :
jnb prg, chan_up
prg_up :
cjne R7, # 49, r7_inc
mov 인 R7, # 0
jmp의 L2
r7_inc :
타운 R7
의 L2 :
전화 get_ch
전화 disp_led
전화 튜너
전화 ms10
plus_wait :
jnb t_plus, plus_wait
jmp abfragechan_down :
cjne R6, # 0, r6_dec
mov 인 R6, # 89
jmp l3
r6_dec :
12월 R6
l3 :
전화 save_ch
전화 disp_led
전화 튜너
전화 ms10
minus2_wait :
jnb t_minus, minus2_wait
jmp abfragechan_up :
cjne R6, # 89, r6_inc
mov 인 R6, # 0
jmp 번과
r6_inc :
타운 R6
4 번과 5 :
전화 save_ch
전화 disp_led
전화 튜너
전화 ms10
plus2_wait :
jnb t_plus, plus2_wait
jmp abfrage에서 cp :
jb prg, mode_ch
mode_prg :
setb prg
전화 store_eeprom
jmp cp_disp
mode_ch :
CLR을 prg
cp_disp :
전화 disp_led
전화 ms10
cp_wait :
jnb t_cp, cp_wait
jmp abfrageget_ch :
mov 인, R7
, # 40에
추가mov 인 R0,
mov 인, @ R0
mov 인 R6,
, # 70, cjne cc_test
cc_test :
cpl C
mov 인 cc_nr는 C
부드럽게하기 위해 물에 담그다save_ch :
mov 인, R7
, # 40에
추가mov 인 R0,
mov 인, R6
mov 인 R0,
@, # 70, cc_test2
cjnecc_test2 :
cpl C
mov 인 cc_nr는 C
부드럽게하기 위해 물에 담그다store_eeprom :
전화 i2c_start
mov 인, # 0a0h
전화 i2c_send
mov 인, R7
전화 i2c_send
mov 인, R6
전화 i2c_send
전화 i2c_stop
부드럽게하기 위해 물에 담그다
disp_led :
mov 인 dptr, # disp_tab
전화 i2c_start; 날짜 안녕히 디스플레이 schreiben
mov 인, # 70h; 따드레스 SAA1064
전화 i2c_send
mov 인, # 오; Instructionbyte SAA1064
전화 i2c_send
mov 인, # 37h; Controlbyte SAA1064
전화 i2c_send

jb prg, prg_nr
ch_nr :
mov 인, R6
jnb cc_nr, D1
CLR은 C
, #
69 subb
jmp D1
prg_nr :
mov 인, R7
D1 :
mov 인 둘째, # 10
div 깨어난
밀어 acc
mov 인는 A,
Bmovc, dptr
@전화 i2c_send

팝업 acc
movc, dptr
@전화 i2c_send

jnb prg, ch_disp
pr_disp :
mov 인, # 17;은 "R"
movc, dptr
@전화 i2c_send

mov 인, # 16;는 "P"
movc, dptr
@전화 i2c_send
jmp d2

ch_disp :
jb cc_nr, cc_dis
mov 인, # 18; ""h
jmp 표시
cc_dis :
mov 인, # 12; "C"를
표시 :
movc, dptr
@전화 i2c_send

mov 인, # 12; "C"를
movc, dptr
@전화 i2c_send

d2 :
전화 i2c_stop
부드럽게하기 위해 물에 담그다튜너 :
전화 i2c_start
mov 인, # 0c2h; 따드레스의 PLL - 칩
전화 i2c_send

mov 인 dptr, # freq_tab

mov 인, R6; 채널 - Nr.
rl a; mit 2 multiplizieren
밀어 acc
movc, @ dptr; Teilerbyte oberes
, # 7Fh
anl전화 i2c_send

팝업 acc
CLR은 C
, # 1을 추가
movc, @ dptr; Teilerbyte unteres
전화 i2c_send

mov 인, # 10001110b; 요금 -
50 펌프?, 정상 작동
전화 i2c_send

cjne R6, # 4, C1으로; Ermittlung 데 Bandes
vhf1 :
mov 인, # 4; VHF와 난
jmp band_ende
에 C1 :
JC는 vhf1

cjne R6, # 12, C2 상태
vhf3 :
mov 인, # 2; VHF와 III에
jmp band_ende
C2 상태 :
JC는 vhf3

cjne R6, # 69, C3에
UHF로 :
mov 인, # 1;와 UHF
jmp band_ende
도 C3 :
JC는 UHF로

jmp vhf3; CC1 .. 20band_ende :

, # 11111000b
orl전화 i2c_send

전화 i2c_stop
부드럽게하기 위해 물에 담그다i2c_start :;의 I2C 시작
setb sda를
nop
setb SCL
전화 ms001

CLR을 sda를; 데이터 안녕히 0 (시작)
전화 ms001
CLR을 SCL; 시계 안녕히 0
전화 ms001
부드럽게하기 위해 물에 담그다i2c_stop :; 그만의 I2C
전화 ms001
setb SCL; 시계 안녕히 1
전화 ms001
sda를 setb; 데이터 안녕히 1 (중지)
전화 ms001
부드럽게하기 위해 물에 담그다i2c_send :; 1 Datenbyte Senden
mov 인 R3, # 8
i2c_sloop :
a RLC
mov 인 sda라고 쓸 수도는 C
전화 ms001
setb SCL
전화 ms001
CLR을 SCL
전화 ms001
djnz R3, i2c_sloop
setb sda를
전화 ms001
setb SCL
전화 ms001
mov 인 C가 sda를; 인정 - 비트 lesen
mov 인 i2c_ack_in는 C
CLR을 SCL
전화 ms001
CLR을 sda를
전화 ms001
부드럽게하기 위해 물에 담그다i2c_read :; 1 Datenbyte empfangen
mov 인 R3, # 8
a CLR을
setb sda를
i2c_rloop :
전화 ms001
setb SCL
mov 인 C가 sda를
a RLC
전화 ms001
CLR을 SCL
djnz R3, i2c_rloop
전화 ms001
mov 인 C가 i2c_ack_out; 인정 - 비트 Senden
mov 인 sda라고 쓸 수도는 C
전화 ms001
setb SCL
전화 ms001
CLR을 SCL
전화 ms001
CLR을 sda를
전화 ms001
부드럽게하기 위해 물에 담그다ms001 :; Verzoegerung 10 우리 (bei 12MHz)
밀어 acc
mov 인, # 2
ms001_1 :
djnz acc, ms001_1
팝업 acc
부드럽게하기 위해 물에 담그다
ms100 :; Verzoegerung 100 석사 (bei 12 MHz 이상)
밀어 acc
mov 인, R0
밀어 acc
mov 인,의 R1
밀어 acc

mov 인 R0, # 100
ms100_2 :
mov 인의 R1, # 100
ms100_1 :
nop
nop
nop
nop
nop
nop
nop
nop
djnz의 R1, ms100_1
djnz R0, ms100_2

팝업 acc
mov 인의 R1,
팝업 acc
mov 인 R0,
팝업 acc
부드럽게하기 위해 물에 담그다ms10 :; Verzoegerung 10 석사 (bei 12 MHz 이상)
밀어 acc
mov 인, R0
밀어 acc
mov 인,의 R1
밀어 acc

mov 인 R0, # 10
ms10_2 :
mov 인의 R1, # 100
ms10_1 :
nop
nop
nop
nop
nop
nop
nop
nop
djnz의 R1, ms10_1
djnz R0, ms10_2

팝업 acc
mov 인의 R1,
팝업 acc
mov 인 R0,
팝업 acc
부드럽게하기 위해 물에 담그다freq_tab :
; 채널 0 ... 4
DB를 오, 오, 5h, 2 시간, 5h, 72h, 5h, 0E2h, 6h, 52h

; 채널 5 ... 12
DB를 0Dh, 62h, 0Dh, 0D2h, 0Eh, 42h, 0Eh, 0B2h, 0Fh, 22h, 0Fh, 92h, 10h, 2 시간, 10h, 72h

; 채널 13 ... 20
DB를 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

; 채널 21 ... 27
DB를 1Fh, 0E2h, 20h, 62h, 20h, 0E2h, 21h, 62h, 21h, 0E2h, 22h, 62h, 22h, 0E2h

; 채널 28 ... 34
에 db 23h, 62h, 23h, 0E2h, 24 시간, 62h, 24 시간, 0E2h, 25h, 62h, 25h, 0E2h, 26h, 62h

; 채널 35 ... 41
에 db 26h, 0E2h, 27H, 62h, 27H, 0E2h, 28h, 62h, 28h, 0E2h, 29h, 62h, 29h, 0E2h

; 채널 42 ... 48
DB를 2Ah, 62h, 2Ah, 0E2h, 2Bh, 62h, 2Bh, 0E2h, 2Ch, 62h, 2Ch, 0E2h, 2Dh, 62h

; 채널 49 ... 55
DB를 2Dh, 0E2h, 2Eh, 62h, 2Eh, 0E2h, 2Fh, 62h, 2Fh, 0E2h, 30H, 62h, 30H, 0E2h

; 채널 56 ... 62
에 db 31h, 62h, 31h, 0E2h, 32h, 62h, 32h, 0E2h, 33h, 62h, 33h, 0E2h, 34h, 62h

; 채널 63 ... 69
에 db 34h, 0E2h, 35h, 62h, 35h, 0E2h, 36h, 62h, 36h, 0E2h, 37h, 62h, 37h, 0E2h

; 참조 1 ... 7 (Sonderkanaele)
DB를 9h, 2 시간, 9h, 72h, 9h, 0E2h, 0Ah, 52h, 0Ah, 0C2h, 0Bh, 32h, 0Bh, 0A2h

; 참조 8 ... 14
DB를 0Ch, 12h, 0Ch, 82h, 0Ch, 0F2h, 10h, 0E2h, 11h, 52h, 11h, 0C2h, 12h, 32h

; 참조 15 ... 20
에 db 12h, 0A2h, 13h, 12h, 13h, 82h, 13h, 0F2h, 14h, 62h, 14h, 0D2h
disp_tab :; 코드 - Tabelle fuer Displayzeichen
; 0 1 2 3 4 5 6 7 8 9 한 B는 C D 조 전자 F
DB를 3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 07h, 7Fh, 6Fh, 77h, 7CH, 39h, 5Eh, 79h, 71h

; P rh
에 db 73h, 50h, 74h최종

은 ASM -> C 언어.
가능한 C sorcue?제발!!
 

Welcome to EDABoard.com

Sponsor

Back
Top