📄 滚动彩条信号.c
字号:
#include<reg51.h>
void gdct()
{
//;滚动彩条信号
// org 0000h
#pragma asm
Line: setb p1.4 ;行同步脉冲开始
mov r4,#13 ;设定循环次数
clr p1.4 ;行同步脉冲结束
inc dptr ;计数器递增,并作行消隐前肩的延时
mov r3,#45 ;预先设定场消隐计数器初值
mov p1,7
djnz r0,aaa
mov r0,#15
nop
sjmp bbb
aaa: cjne r0,#7,ccc
nop
nop
bbb: mov a,r1
add a,#4
mov r1,a
mov r4,#9
cjne a,b,ccc
mov r7,#0
dec r4
ccc: djnz r4,$
clr a
mov p1,a
cjne a,dph,Line ;继续下一行周期
Frame: setb p1.4 ;场消隐期间仍要行同步脉冲
mov r2,#12 ;设定延时时间
clr p1.4 ;行同步脉冲结束
FF: cjne r3,#32,FB ;倒数到32时,开始场同步信号
sjmp Chg
FB: cjne r3,#30,Cnt ;倒数到30时,结束场同步信号
Chg: cpl p1.5 ;场同步信号反转
sjmp Dly
Cnt: mov dptr,#-480 ;设定显示区域的行数
mov r1,a
Dly: djnz r2,$ ;延时
xch a,b
add a,#148 ;((480-512)+45*148)\256=4
xch a,b
mov r7,#7
cjne r3,#1,Next ;判断场消隐是否到时
ajmp Line ;转到显示区域信号输出
Next: djnz r3,Frame ;继续场消隐周期
#pragma endasm
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -