📄 pt2257.asm
字号:
vol_tbl:
addam pc,1 ;vol_point
retla 00h ; 0
retla 03h ; 1
retla 06h ; 2
retla 09h ; 3
retla 12h ; 4
retla 15h ; 5
retla 18h ; 6
retla 21h ; 7
retla 24h ; 8
retla 27h ; 9
retla 30h ; 10
retla 32h ; 11
retla 34h ; 12
retla 36h ; 13
retla 38h ; 14
retla 40h ; 15
retla 42h ; 16
retla 44h ; 17
retla 46h ; 18
retla 48h ; 19
retla 50h ; 20
retla 51h ; 21
retla 52h ; 22
retla 53h ; 23
retla 54h ; 24
retla 55h ; 25
retla 56h ; 26
retla 57h ; 27
retla 58h ; 28
retla 59h ; 29
retla 60h ; 30
retla 61h ; 31
retla 62h ; 32
retla 63h ; 33
retla 64h ; 34
retla 65h ; 35
retla 66h ; 36
retla 67h ; 37
retla 68h ; 38
retla 69h ; 39
retla 70h ; 40
retla 71h ; 41
retla 72h ; 42
retla 73h ; 43
retla 74h ; 44
retla 75h ; 45
retla 76h ; 46
retla 77h ; 47
retla 78h ; 48
retla 79h ; 49
;
;
;
;
;----------------------------------------
set_vol:
movam vol_point
;start bit.
bsm _sda
lcall delay7us
bsm _scl
lcall delay7us
bcm _sda
lcall delay7us
bcm _scl
;Set PT2257's Address.
movla 88h
lcall send_i2c_dat
lcall i2c_ack
;set -10db.
movm vol_point,0
lcall vol_tbl
movam tmp0
swapm tmp0,0
andla 0fh
iorla b'11100000'
lcall send_i2c_dat
lcall i2c_ack
;set -1db:
movm vol_point,0
lcall vol_tbl
andla 0fh
iorla b'11010000'
lcall send_i2c_dat
lcall i2c_ack
stop:
bcm _sda
nop
bsm _scl
lcall delay7us
bsm _sda
lcall delay7us
ret
send_i2c_dat:
movam tmp0
movla .8
movam tmp1
send_i2c_dat_loop:
rlm tmp0,1
bsm _sda
btmss _c
bcm _sda
nop
bsm _scl
lcall delay5us
bcm _scl
decmsz tmp1,1
lgoto send_i2c_dat_loop
ret
i2c_ack:
bsm _sda
movla b'11000101'
iodir iodir_b
bsm _scl
lcall delay5us
bcm _scl
movla b'11000001'
iodir iodir_b
lcall delay5us
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -