当前位置:编程学习 > 汇编语言 >>

单片机c51定时计数器汇编语言程序及解释

帮忙解释一下
追问:OUTBIT   equ 0e101h
	CLK164   equ 0e102h  ; 段控制口(接164时钟位)
	DAT164   equ 0e102h  ; 段控制口(接164数据位)
	LEDBuf  equ   40h
	IN      equ 0e103h
            ORG 0000h
	        MOV SP,#60H
	        MOV DPTR,#0e100H     ;8155初始化
     	    MOV A,#03H
	        MOVX @DPTR,A
	        MOV TMOD,#05H       ;定时器初始化
	        MOV TH0,#00H
答案:程序呢? 下面给你一段杜洋的书上的解释(不过好像楼主提的问题不是这个吧?)你是想问会?C8051?
/*********************************************************************************************/



[定时/计数器函数]

-----------------------------------------------------------------------------
M1	M0	方式	说明
0	0	0	13位T/C,由TL低5位和TH的8位组成13位计数器
0	1	1	16位T/C,TL和TH共16位计数器
1	0	2	8位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL
1	1	3	两组8位T/C
-----------------------------------------------------------------------------

/*********************************************************************************************
函数名:定时/计数器初始化函数
调  用:T_C_init();
参  数:无
返回值:无
结  果:设置SFR中T/C1和(或)T/C0相关参数
备  注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽
/**********************************************************************************************/
void T_C_init (void){
	TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
	EA = 1;	//中断总开关

	TH1 = 0xFF; //16位计数寄存器T1高8位(写入初值)
	TL1 = 0xFF; //16位计数寄存器T1低8位
	ET1 = 1; //T/C1中断开关
	TR1 = 1; //T/C1启动开关

	//TH0 = 0x3C; //16位计数寄存器T0高8位
	//TL0 = 0xB0; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)
	//ET0 = 1; //T/C0中断开关
	//TR0 = 1; //T/C0启动开关
}
/**********************************************************************************************/

/*********************************************************************************************
函数名:定时/计数器1中断处理函数
调  用:[T/C1溢出后中断处理]
参  数:无
返回值:无
结  果:重新写入16位计数寄存器初始值,处理用户程序
备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致
/**********************************************************************************************/
void T_C1 (void) interrupt 3  using 3{ //切换寄存器组到3
	TH1 = 0x3C; //16位计数寄存器T1高8位(重新写入初值)
	TL1 = 0xB0; //16位计数寄存器T1低8位(0x3CB0 = 50mS延时)
	
	//函数内容
}
/**********************************************************************************************/

/*********************************************************************************************
函数名:定时/计数器0中断处理函数
调  用:[T/C0溢出后中断处理]
参  数:无
返回值:无
结  果:重新写入16位计数寄存器初始值,处理用户程序
备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致
/**********************************************************************************************/
void T_C0 (void) interrupt 1  using 1{ //切换寄存器组到1
	TH0 = 0x3C; //16位计数寄存器T0高8位(重新写入初值)
	TL0 = 0xB0; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)
	
	//函数内容
}
/**********************************************************************************************/

上一个:单片机汇编中出现错误ILLEGAL CHATACTER 是什么意思?
下一个:帮忙详细解释下汇编程序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,