亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.asm

?? 周立功單片機上的源程序
?? ASM
字號:
;*************************************************************************
;	main.asm
;	16×16 LED點陣的掃描顯示:滾動顯示文字
;*************************************************************************


;*************************************************************************
;設置屏幕滾動速度(單位:×10ms)
;*************************************************************************
SCROLL_SPEED	EQU	15


;*************************************************************************
;定義I/O端口
;*************************************************************************
STR	BIT	P1.3	;74HC595存儲寄存器時鐘(Storage register clock)
SI	BIT	P1.4	;74HC595串行輸入信號(Serial Input)
SCK	BIT	P1.5	;74HC595移位寄存器時鐘(Shift register clock)


;*************************************************************************
;定義全局變量
;*************************************************************************
DispBuf	IDATA	0x30	;定義顯示緩沖區(在T1定時中斷里掃描)
T1INTSVC_n	DATA	0x30+32	;函數T1INTSVC()中的靜態變量


;*************************************************************************
;復位入口
;*************************************************************************
	ORG	0x0000
	LJMP	Premain


;*************************************************************************
;T1中斷入口
;*************************************************************************
	ORG	0x001B
	LJMP	T1INTSVC


;*************************************************************************
;文件包含
;*************************************************************************
$INCLUDE(Branch.INC)	;分支判斷
$INCLUDE(Zimo.inc)	;包含字模點陣頭文件


;*************************************************************************
;程序段:Premain
;功能:進入函數main()之前的初始化
;*************************************************************************
Premain:
	MOV	SP, #(0x2F+33)
	MOV	T1INTSVC_n, #0
	LJMP	main


;*************************************************************************
;函數:void SysInit()
;功能:系統初始化
;*************************************************************************
SysInit:
	CLR	A
	MOV	R1, A
	MOV	R0, #DispBuf
SysInit_for:
	MOV	@R0, A
	INC	R0
	INC	R1
	CJNE	R1, #32, SysInit_for
	SETB	STR
	CLR	SI
	CLR	SCK
	ANL	TMOD, #0xF0
	ORL	TMOD, #0x01
	ANL	TMOD, #0x0F
	ORL	TMOD, #0x10
	MOV	TH1, #0xFC
	MOV	TL1, #0x66
	SETB	TR1
	SETB	ET1
	SETB	EA
	RET


;*************************************************************************
;函數:Delay()
;功能:延時10ms~2.56s
;參數:
;	t>0時,延時(t*10)ms
;	t=0時,延時2.56s
;*************************************************************************
; void Delay(unsigned char t)
; t = R7
Delay:
	MOV	TH0, #0xDC
	MOV	TL0, #0x66
	SETB	TR0
	JNB	TF0, $
	CLR	TR0
	CLR	TF0
	DJNZ	R7, Delay
	RET


;*************************************************************************
;函數:isupper()
;功能:判斷字符c是否為大寫字母
;*************************************************************************
; bit isupper(unsigned char c)
; c = R7
; 返回值 = CY
isupper:
;{
;	if ( (c >= 'A') && (c <= 'Z') )
	BLO	R7, #'A', isupper_endif
	BHI	R7, #'Z', isupper_endif
;	{
;		return 1;
		SETB	C
		RET
;	}
isupper_endif:
;	return 0;
	CLR	C
;}
	RET


;*************************************************************************
;函數:islower()
;功能:判斷字符c是否為小寫字母
;*************************************************************************
; bit islower(unsigned char c)
; c = R7
; 返回值 = CY
islower:
;{
;	if ( (c >= 'a') && (c <= 'z') )
	BLO	R7, #'a', islower_endif
	BHI	R7, #'z', islower_endif
;	{
;		return 1;
		SETB	C
		RET
;	}
islower_endif:
;	return 0;
	CLR	C
;}
	RET


;*************************************************************************
;函數:void PutChar(unsigned char c)
;功能:滾動顯示一個字母或漢字
;參數:
;	c:字母或漢字的編碼,當c>=0x80時視為漢字
;*************************************************************************
; void PutChar(unsigned char c)
; c = R7
PutChar:
;{
;	unsigned int a;		//地址變量
;	unsigned char i,j;	//循環變量
;	unsigned char t;	//臨時變量
;	unsigned char code *Tab;	//指針,用于查表
;	分配:a = (R2,R3)
;	分配:i = R4
;	分配:j = R5
;	分配:t = R6
;	分配:*Tab = (0x18,0x19)
	PUSH	0x02
	PUSH	0x03
	PUSH	0x04
	PUSH	0x05
	PUSH	0x06
	PUSH	0x18
	PUSH	0x19
;	t = 8;
	MOV	R6, #8
;	if ( c >= 0x80 )	//如果c是漢字
	BLO	R7, #0x80, PutChar_elseif1
;	{
;		t = 16;
		MOV	R6, #16
;		a = 32 * ( c - 0x80 );
		MOV	A, R7
		CLR	C
		SUBB	A, #0x80
		MOV	B, #32
		MUL	AB
		MOV	R2, B
		MOV	R3, A
;		Tab = HanziTab;
		MOV	0x18, #HIGH(HanziTab)
		MOV	0x19, #LOW(HanziTab)
;	}
	SJMP	PutChar_endif
;	else if ( isupper(c) )	//如果c是大寫字母
PutChar_elseif1:
	LCALL	isupper
	JNC	PutChar_elseif2
;	{
;		a = 16 * ( c - 'A' );
		MOV	A, R7
		CLR	C
		SUBB	A, #'A'
		MOV	B, #16
		MUL	AB
		MOV	R2, B
		MOV	R3, A
;		Tab = UpperTab;
		MOV	0x18, #HIGH(UpperTab)
		MOV	0x19, #LOW(UpperTab)
;	}
	SJMP	PutChar_endif
;	else if ( islower(c) )	//如果c是小寫字母
PutChar_elseif2:
	LCALL	islower
	JNC	PutChar_else
;	{
;		a = 16 * ( c - 'a' );
		MOV	A, R7
		CLR	C
		SUBB	A, #'a'
		MOV	B, #16
		MUL	AB
		MOV	R2, B
		MOV	R3, A
;		Tab = LowerTab;
		MOV	0x18, #HIGH(LowerTab)
		MOV	0x19, #LOW(LowerTab)
;	}
	SJMP	PutChar_endif
;	else	//如果是其它字符
PutChar_else:
;	{
;		return;
		SJMP	PutChar_end
;	}
PutChar_endif:
;	for ( j=0; j<t; j++ )
	MOV	R5, #0
PutChar_for1:
;	{
;		for ( i=0; i<15; i++ )
		MOV	R4, #0
PutChar_for2:
;		{
;			DispBuf[i] = DispBuf[i+1];
			MOV	A, #DispBuf
			ADD	A, R4
			MOV	R0, A
			INC	A
			MOV	R1, A
			MOV	A, @R1
			MOV	@R0, A
;			DispBuf[16+i] = DispBuf[17+i];
			MOV	A, R0
			ADD	A, #16
			MOV	R0, A
			INC	A
			MOV	R1, A
			MOV	A, @R1
			MOV	@R0, A
;		}
		INC	R4
		CJNE	R4, #15, PutChar_for2
;		DispBuf[i] = Tab[a+j];
		MOV	A, #DispBuf
		ADD	A, R4
		MOV	R0, A
		MOV	A, 0x19
		ADD	A, R3
		MOV	DPL, A
		MOV	A, 0x18
		ADDC	A, R2
		MOV	DPH, A
		MOV	A, R5
		MOVC	A, @A+DPTR
		MOV	@R0, A
;		DispBuf[16+i] = Tab[a+j+t];
		MOV	A, R0
		ADD	A, #16
		MOV	R0, A
		MOV	A, R5
		ADD	A, R6
		MOVC	A, @A+DPTR
		MOV	@R0, A
;		Delay(SCROLL_SPEED);
		PUSH	0x07
		MOV	R7, #SCROLL_SPEED
		LCALL	Delay
		POP	0x07
;	}
	INC	R5
	BLO	R5, R6, PutChar_for1
PutChar_end:
	POP	0x19
	POP	0x18
	POP	0x06
	POP	0x05
	POP	0x04
	POP	0x03
	POP	0x02
	RET


;*************************************************************************
;函數:PutStr()
;功能:滾動顯示一個文字串
;參數:
;	*str:以'\0'結尾的文字串
;	*str可以同時包含字母和漢字,其中漢字必須是小漢字庫內的漢字
;*************************************************************************
; void PutStr(unsigned char code *str)
; *str = (R6,R7)
PutStr:
	PUSH	0x02
	PUSH	0x03
	MOV	A, R6
	MOV	R2, A
	MOV	A, R7
	MOV	R3, A
;	unsigned char c;
;	for (;;)
PutStr_for:
;	{
;		c = *str++;
		MOV	DPH, R2
		MOV	DPL, R3
		CLR	A
		MOVC	A, @A+DPTR
		INC	DPTR
		MOV	R2, DPH
		MOV	R3, DPL
;		if ( c == '\0' ) break;
		JZ	PutStr_endfor
;		PutChar(c);
		MOV	R7, A
		LCALL	PutChar
;	}
	SJMP	PutStr_for
PutStr_endfor:
	POP	0x03
	POP	0x02
	RET


;*************************************************************************
;函數:void T1INTSVC() interrupt 3 using 2
;功能:T1中斷服務函數
;*************************************************************************
T1INTSVC:
;保護寄存器
	PUSH	ACC
	PUSH	PSW
	PUSH	DPH
	PUSH	DPL
;切換到第2組工作寄存器
	SETB	RS1
	CLR	RS0
;定義變量
;	static unsigned char n = 0;	//局部靜態變量,用于查表
;	unsigned char i,j;	//循環變量
;	unsigned char d;	//臨時變量
;	unsigned char data buf[4];	//臨時數組,用于向74HC595發送數據
;	分配:i = R2
;	分配:j = R3
;	分配:d = ACC
;分配數組buf[]
	MOV	A, SP
	INC	A
	MOV	R4, A
	ADD	A, #3
	MOV	SP, A
;處理定時器T1
;	TR1 = 0;
;	TH1 = 0xFC;
;	TL1 = 0x66;
;	TR1 = 1;
	CLR	TR1
	MOV	TH1, #0xFC
	MOV	TL1, #0x66
	SETB	TR1
;查表,取得要發送的數據
;	buf[0] = Tab[n];
	MOV	A, R4
	MOV	R0, A
	MOV	A, T1INTSVC_n
	MOV	DPTR, #T1INTSVC_Tab
	MOVC	A, @A+DPTR
	MOV	@R0, A
	INC	R0
;	buf[1] = Tab[16+n];
	MOV	A, T1INTSVC_n
	ADD	A, #16
	MOVC	A, @A+DPTR
	MOV	@R0,A
	INC	R0
;	buf[2] = DispBuf[16+n];
	MOV	A, #DispBuf
	ADD	A, #16
	ADD	A, T1INTSVC_n
	MOV	R1, A
	MOV	A, @R1
	MOV	@R0, A
	INC	R0
;	buf[3] = DispBuf[n];
	MOV	A, #DispBuf
	ADD	A, T1INTSVC_n
	MOV	R1, A
	MOV	A, @R1
	MOV	@R0, A
;	n++;
;	n &= 0x0F;
	INC	T1INTSVC_n
	ANL	T1INTSVC_n, #0x0F
;向74HC595發送數據
;	STR = 0;
	CLR	STR
;	for ( i=0; i<4; i++ )
	MOV	R2, #0
	MOV	A, R4
	MOV	R0, A
T1INTSVC_for:
;	{
;		d = buf[i];
		MOV	A, @R0
		INC	R0
;		j = 8;
		MOV	R3, #8
;		do
T1INTSVC_do:
;		{
;			SI = (bit)(d & 0x01);
			MOV	C, ACC.0
			MOV	SI, C
;			SCK = 1;
;			d >>= 1;
;			SCK = 0;
			SETB	SCK
			RR	A
			ANL	A, #0x7F
			CLR	SCK
;		} while ( --j != 0 );
		DJNZ	R3, T1INTSVC_do
;	}
	INC	R2
	CJNE	R2, #4, T1INTSVC_for
;	STR = 1;
	SETB	STR
;釋放數組buf[]
	MOV	A, SP
	CLR	C
	SUBB	A, #4
	MOV	SP, A
;恢復寄存器
	POP	DPL
	POP	DPH
	POP	PSW
	POP	ACC
;中斷返回
	RETI
T1INTSVC_Tab:
	;定義掃描數據表
	DB	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE
	DB	0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF


;*************************************************************************
;函數:void main()
;功能:主函數
;*************************************************************************
main:
	LCALL	SysInit
main_Loop:
	MOV	R6, #HIGH(main_s)
	MOV	R7, #LOW(main_s)
	LCALL	PutStr
	SJMP	main_Loop
main_s:
	;定義文字串
	DB	0x81	;歡
	DB	0x82	;迎
	DB	0x83	;使
	DB	0x84	;用
	DB	'S','m','a','r','t','S','O','P','C'
	DB	0x85	;教
	DB	0x86	;學
	DB	0x87	;實
	DB	0x88	;驗
	DB	0x89	;開
	DB	0x8A	;發
	DB	0x8B	;平
	DB	0x8C	;臺
	DB	0x80	; (全角空白)
	DB	0x00


;*************************************************************************
;程序結束
;*************************************************************************
	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产尤物一区二区| 日韩成人av影视| 日本一区二区在线不卡| 26uuu色噜噜精品一区二区| 91精品国产综合久久精品性色| 欧美伊人久久久久久久久影院 | 日韩成人免费在线| 亚洲第一狼人社区| 久久精品国产一区二区三| 极品少妇xxxx精品少妇| 国产91高潮流白浆在线麻豆| 97精品超碰一区二区三区| 欧美性色黄大片| 日韩欧美在线123| 久久影视一区二区| 中文字幕日韩精品一区| 亚洲综合丁香婷婷六月香| 日韩极品在线观看| 国产一区 二区| 在线欧美一区二区| 欧美精品第一页| 久久午夜国产精品| 亚洲乱码中文字幕| 精品一区二区日韩| 99免费精品视频| 欧美一区二区视频在线观看2022 | 成人动漫精品一区二区| 在线观看视频一区二区| 欧美mv日韩mv| 亚洲女女做受ⅹxx高潮| 欧美aaaaaa午夜精品| 懂色av一区二区三区免费观看| 91视频精品在这里| 日韩三级视频在线看| 自拍偷拍亚洲欧美日韩| 男人操女人的视频在线观看欧美| 国产91精品一区二区麻豆网站 | 国产成人精品亚洲午夜麻豆| 91久久精品一区二区三区| 欧美成人免费网站| 夜夜夜精品看看| 成人开心网精品视频| 91精品国产色综合久久不卡电影| 中文字幕第一区第二区| 蜜臀va亚洲va欧美va天堂| 91农村精品一区二区在线| 久久久综合激的五月天| 日韩精品一二三| 在线精品视频一区二区三四| 欧美极品aⅴ影院| 精品亚洲免费视频| 欧美疯狂做受xxxx富婆| 亚洲欧美视频一区| 成人福利视频网站| 国产日韩欧美综合一区| 久久99最新地址| 91麻豆精品国产91久久久久久 | 蜜臀av在线播放一区二区三区| 色狠狠综合天天综合综合| 欧美激情资源网| 国产精品亚洲成人| 亚洲精品一区二区三区蜜桃下载| 午夜激情综合网| 欧美三级乱人伦电影| 亚洲最色的网站| 色天使久久综合网天天| 亚洲美女视频在线| 色婷婷久久久综合中文字幕| 国产精品国产三级国产专播品爱网 | 成人晚上爱看视频| 国产欧美精品一区二区色综合朱莉| 精品影院一区二区久久久| 91精品国产91久久久久久最新毛片 | 国产精品三级电影| 国产一本一道久久香蕉| 久久亚洲影视婷婷| 国产精品911| 中文子幕无线码一区tr| 成人高清免费在线播放| 亚洲品质自拍视频| 欧美日精品一区视频| 亚洲h动漫在线| 日韩精品影音先锋| 国产成人一区在线| 亚洲欧美综合色| 欧美日韩精品一区二区天天拍小说| 亚洲午夜久久久久久久久电影网| 欧美日韩电影在线| 国内一区二区视频| 国产精品毛片无遮挡高清| 色狠狠一区二区| 美女视频黄频大全不卡视频在线播放 | 夜夜揉揉日日人人青青一国产精品| 97国产一区二区| 五月激情六月综合| 2020国产精品| 色婷婷精品大在线视频| 日韩和欧美一区二区三区| 欧美va在线播放| av亚洲精华国产精华精华| 亚洲一级二级三级在线免费观看| 91精品国产综合久久精品麻豆| 精品一区二区免费| 玉米视频成人免费看| 日韩欧美一级精品久久| 成人性生交大合| 五月天网站亚洲| 欧美国产日本视频| 这里只有精品视频在线观看| 国产精品一区二区在线观看不卡| 亚洲欧美国产高清| 欧美精品一区在线观看| 色一情一伦一子一伦一区| 久久99精品久久久久久| 一区二区在线观看视频在线观看| 精品国产一区二区三区不卡| 在线观看视频欧美| 风间由美性色一区二区三区| 免费xxxx性欧美18vr| 亚洲特黄一级片| 久久久精品国产99久久精品芒果| 在线视频一区二区免费| 成人免费视频视频在线观看免费| 免费在线观看一区二区三区| 亚洲精品视频观看| 国产精品久久精品日日| 久久综合久久久久88| 欧美精品一级二级| 欧美最猛黑人xxxxx猛交| 国产精品99久久久| 狠狠色综合播放一区二区| 天天做天天摸天天爽国产一区 | 亚洲成a天堂v人片| 亚洲日本va午夜在线影院| 久久久蜜桃精品| 精品久久久久久久久久久久包黑料 | 日韩欧美中文字幕精品| 欧美亚洲国产一区在线观看网站| 成人深夜在线观看| 国产激情一区二区三区桃花岛亚洲| 美女视频第一区二区三区免费观看网站| 亚洲综合免费观看高清完整版在线| 欧美国产禁国产网站cc| 国产丝袜欧美中文另类| 久久久久国产一区二区三区四区| 欧美v亚洲v综合ⅴ国产v| 欧美变态tickling挠脚心| 91精品国产综合久久香蕉的特点| 欧美天堂亚洲电影院在线播放| 91成人网在线| 欧美三级电影一区| 91精品国产乱| www激情久久| 国产亚洲欧美日韩日本| 国产精品美女久久久久久 | 日韩欧美一区二区免费| 欧美一区二区日韩一区二区| 91麻豆精品国产91久久久久久久久 | 久久久久久久综合狠狠综合| 亚洲精品一区二区三区福利| 久久久久国产免费免费| 国产亚洲午夜高清国产拍精品| 国产午夜精品一区二区三区视频| 日本一区二区三区在线不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 裸体一区二区三区| 国产一区二区三区四区五区入口| 国产一区二区毛片| 成人性视频免费网站| 在线亚洲精品福利网址导航| 欧美日韩国产综合久久| 欧美变态凌虐bdsm| 国产精品毛片高清在线完整版| 亚洲日本免费电影| 日本免费新一区视频| 国产在线一区观看| 99久久99久久综合| 欧美高清视频www夜色资源网| 精品剧情在线观看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲人xxxx| 狠狠色丁香久久婷婷综合_中 | 26uuu亚洲综合色欧美| 中文字幕一区在线观看| 三级一区在线视频先锋| 国产精品亚洲成人| 欧美三区在线观看| 欧美国产日韩a欧美在线观看| 亚洲国产成人av好男人在线观看| 久久99在线观看| 欧美天堂一区二区三区| 国产无一区二区| 亚洲超碰97人人做人人爱| 国产精品香蕉一区二区三区| 欧美性xxxxxx少妇| 国产日韩欧美制服另类| 日韩和欧美一区二区三区| 色婷婷精品大在线视频| 久久久蜜桃精品| 老司机午夜精品99久久|