?? main.c
字號:
#include<reg51.h>
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
void gdct()
{
//;滾動彩條信號
// org 0000h
#pragma asm
Line: setb p1.4 ;行同步脈沖開始
mov r4,#13 ;設定循環(huán)次數(shù)
clr p1.4 ;行同步脈沖結(jié)束
inc dptr ;計數(shù)器遞增,并作行消隱前肩的延時
mov r3,#45 ;預先設定場消隱計數(shù)器初值
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 ;繼續(xù)下一行周期
Frame: setb p1.4 ;場消隱期間仍要行同步脈沖
mov r2,#12 ;設定延時時間
clr p1.4 ;行同步脈沖結(jié)束
FF: cjne r3,#32,FB ;倒數(shù)到32時,開始場同步信號
sjmp Chg
FB: cjne r3,#30,Cnt ;倒數(shù)到30時,結(jié)束場同步信號
Chg: cpl p1.5 ;場同步信號反轉(zhuǎn)
sjmp Dly
Cnt: mov dptr,#-480 ;設定顯示區(qū)域的行數(shù)
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 ;轉(zhuǎn)到顯示區(qū)域信號輸出
Next: djnz r3,Frame ;繼續(xù)場消隱周期
#pragma endasm
}
void hbst()
{
#pragma asm
//;黑白豎條
// org 0000h
Line1: setb p1.4 ;行同步脈沖開始
mov r3,#45 ;預先設定場消隱計數(shù)器初值
clr p1.4 ;行同步脈沖結(jié)束
inc dptr ;計數(shù)器遞增,并作行消隱前肩的延時
inc dptr
setb p1.3
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
inc p1
dec p1
mov p1,a
cjne a,dph,Line1 ;繼續(xù)下一行周期
Frame1: setb p1.4 ;場消隱期間仍要行同步脈沖
mov r2,#14 ;設定延時時間
clr p1.4 ;行同步脈沖結(jié)束
FF1: cjne r3,#32,FB1 ;倒數(shù)到32時,開始場同步信號
sjmp Chg1
FB1: cjne r3,#30,Cnt1 ;倒數(shù)到30時,結(jié)束場同步信號
Chg1: cpl p1.5 ;場同步信號反轉(zhuǎn)
sjmp Dly1
Cnt1: mov dptr,#-960 ;設定顯示區(qū)域的行數(shù)
nop ;匹配周期時長
Dly1: djnz r2,$ ;延時
cjne r3,#1,Next1 ;判斷場消隱是否到時
ajmp Line1 ;轉(zhuǎn)到顯示區(qū)域信號輸出
Next1: djnz r3,Frame1 ;繼續(xù)場消隱周期
#pragma endasm
}
void kct()
{
#pragma asm
//;寬彩條信號
// org 0000h
Line2: setb p1.4 ;行同步脈沖開始
nop ;延時
clr p1.4 ;行同步脈沖結(jié)束
inc dptr ;計數(shù)器遞增,并作行消隱前肩的延時
inc dptr
mov p1,#15 ;設定循環(huán)次數(shù)
mov r3,#45 ;預先設定場消隱計數(shù)器初值
djnz p1,$ ;輸出彩條信號
cjne a,dph,Line2 ;繼續(xù)下一行周期
Frame2: setb p1.4 ;場消隱期間仍要行同步脈沖
mov r2,#14 ;設定延時時間
clr p1.4 ;行同步脈沖結(jié)束
FF2: cjne r3,#32,FB2 ;倒數(shù)到32時,開始場同步信號
sjmp Chg2
FB2: cjne r3,#30,Cnt2 ;倒數(shù)到30時,結(jié)束場同步信號
Chg2: cpl p1.5 ;場同步信號反轉(zhuǎn)
sjmp Dly2
Cnt2: mov dptr,#-960 ;設定顯示區(qū)域的行數(shù)
nop ;匹配周期時長
Dly2: djnz r2,$ ;延時
cjne r3,#1,Next2 ;判斷場消隱是否到時
ajmp Line1 ;轉(zhuǎn)到顯示區(qū)域信號輸出
Next2: djnz r3,Frame2 ;繼續(xù)場消隱周期
#pragma endasm
}
void qp()
{
#pragma asm
//;棋盤信號
// org 0000h
Line3: setb p1.4 ;行同步脈沖開始
mov r4,#7 ;延時
clr p1.4 ;行同步脈沖結(jié)束
inc dptr ;計數(shù)器遞增,并作行消隱前肩的延時
mov r3,#45 ;預先設定場消隱計數(shù)器初值
mov p1,b
djnz r0,aaa3
xrl p1,#7
xrl b,#7
xrl p1,#7
mov r0,#80
mov r4,#5
aaa3: xrl p1,#7
djnz r4,aaa3
mov p1,#0
cjne a,dph,Line3 ;繼續(xù)下一行周期
Frame3: setb p1.4 ;場消隱期間仍要行同步脈沖
mov r2,#14 ;設定延時時間
clr p1.4 ;行同步脈沖結(jié)束
FF3: cjne r3,#32,FB3 ;倒數(shù)到32時,開始場同步信號
sjmp Chg3
FB3: cjne r3,#30,Cnt3 ;倒數(shù)到30時,結(jié)束場同步信號
Chg3: cpl p1.5 ;場同步信號反轉(zhuǎn)
sjmp Dly3
Cnt3: mov dptr,#-480 ;設定顯示區(qū)域的行數(shù)
;nop ;匹配周期時長
mov r0,#80
Dly3: djnz r2,$ ;延時
cjne r3,#1,Next3 ;判斷場消隱是否到時
ajmp Line3 ;轉(zhuǎn)到顯示區(qū)域信號輸出
Next3: djnz r3,Frame3 ;繼續(xù)場消隱周期
#pragma endasm
}
void xq()
{
#pragma asm
//;細彩條
// org 0000h
Line4: setb p1.4 ;行同步脈沖開始
mov r3,#45 ;預先設定場消隱計數(shù)器初值
clr p1.4 ;行同步脈沖結(jié)束
inc dptr ;計數(shù)器遞增,并作行消隱前肩的延時
inc dptr
nop
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
mov p1,a
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
inc p1
mov p1,a
cjne a,dph,Line4 ;繼續(xù)下一行周期
Frame4: setb p1.4 ;場消隱期間仍要行同步脈沖
mov r2,#14 ;設定延時時間
clr p1.4 ;行同步脈沖結(jié)束
FF4: cjne r3,#32,FB4 ;倒數(shù)到32時,開始場同步信號
sjmp Chg4
FB4: cjne r3,#30,Cnt4 ;倒數(shù)到30時,結(jié)束場同步信號
Chg4: cpl p1.5 ;場同步信號反轉(zhuǎn)
sjmp Dly4
Cnt4: mov dptr,#-960 ;設定顯示區(qū)域的行數(shù)
nop ;匹配周期時長
Dly4: djnz r2,$ ;延時
cjne r3,#1,Next4 ;判斷場消隱是否到時
ajmp Line4 ;轉(zhuǎn)到顯示區(qū)域信號輸出
Next4: djnz r3,Frame4 ;繼續(xù)場消隱周期
#pragma endasm
}
void main()
{
while(1)
{
if(!P30)gdct();
if(!P31)hbst();
if(!P32) kct();
if(!P33)qp();
if(!P34)xq();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -