最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 音响DIY > 功放DIY > 前级DIY >

单片机的应用例子--多功能红外线遥控前级(2)

时间:2012-10-04 16:08来源:hifidiy.net论坛 作者:JiangWZ 点击:
$$: clr _DplDuty ; call __readbut push R0 ;如果只有 C 语言调用此子程序,进栈和退栈部分可以抹掉 push R1 ; push R2 ; push R3 push R4 push R5 ; LD DigPos,#00000001B CPX _DigCtr,#05 JR ULT,NX_DIG LDX _Di

$$:                clr        _DplDuty
;                call        __readbut

                push        R0                ;如果只有 C 语言调用此子程序,进栈和退栈部分可以抹掉
                push        R1                ;
                push        R2                ;
                push        R3
                push        R4
                push        R5                ;

                                LD            DigPos,#00000001B
                CPX          _DigCtr,#05
                JR            ULT,NX_DIG
                LDX        _DigCtr,#0
NX_DIG  ADDX     _DigCtr,#1
                LDX        R0,_DigCtr
$$:                RR            DigPos
                djnz        R0,$B
                                LDX          SegBuf,_Volume
                cpx        _DigCtr,#03
                jr        ult,$F
                        LDX          SegBuf,_ChNr
$$:
                TMX        _DigCtr,#1
                JR        NZ,LSD
                SWAP        SegBuf                ;若是偶数,左右四比特对换
LSD                           AND         SegBuf,#0FH        ;淹没左四比特
                LD         R0, #high(seg_ptr)        ;画段指针
                LD         R1, #low(seg_ptr)        ;
                ADD          R1,SegBuf                  ;加上错位
                ADC          R0,#0
                LDC          SegBuf,@RR0               ;从画段表获取数据                           
                cpx        _FuncNr,#0
                jr        ne,$F
                cpx        _DigCtr,#3                ;显示音量时第三位数空白
                jr        eq,blank
$$:                cpx        _DigCtr,#05
                jr        ult,$F
blank                         clr            SegBuf                        ;灭显示
$$:
                                LD            R3,SegBuf              ;输出画段
                COM         R3                ;低电平驱动
                                CALL         OUT_BYTE
                                LD            R3,DigPos                ;输出位数
                                CALL         OUT_BYTE
                ORX        stb1,#stb1_1        ;转移数据
                NOP
                NOP
                NOP
                                ANDX        stb1,#stb1_0
                ANDX        data1,#data1_0
                andx        _DplFlag,#%FE        ;标记处理完毕

                pop        R5                ;如果只有 C 语言调用此子程序,进栈和退栈部分可以抹掉
                pop        R4
                pop        R3
                pop        R2
                pop        R1
                pop        R0
                                RET

OUT_BYTE        ;串移数据
                                LD            R2,#08        ;8 比特
SFT_LP       
                ANDX        data1,#data1_0
                RL             R3
                JR             NC,CLKING
                ORX          data1,#data1_1
CLKING        ;输出一个时钟脉冲
                NOP
                NOP
                NOP
                ORX          clk1,#clk1_1
                NOP
                NOP
                NOP
                ANDX         clk1,#clk1_0
                DJNZ          R2,SFT_LP
                RET
;--------------------------------------------

刚完成了采用 NEC 波形的读码部分,改天再写飞利浦波形的。

; 汇编部分,中断子程序

vector        C3=_isr_C3; 红外线, 下降沿,
_isr_C3:
        tmx                PCIN,#%08                ; 只取下降沿
        jr                nz,c3_x
        ldx                _width,T1H                ; 一次 = 92.23uS (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容