📄 timer0_overflow.src
字号:
; .\Timer0_overflow.SRC generated from: Timer0_overflow.c
; COMPILER INVOKED BY:
; e:\Keil\C51\BIN\C51.EXE Timer0_overflow.c LARGE BROWSE DEBUG OBJECTEXTEND SRC(.\Timer0_overflow.SRC)
$NOMOD51
NAME TIMER0_OVERFLOW
P10 BIT 090H.0
ET0 BIT 0A8H.1
TF0 BIT 088H.5
TH0 DATA 08CH
TL0 DATA 08AH
?PR?Timer0_Overflow?TIMER0_OVERFLOW SEGMENT CODE
EXTRN BIT (nTxNextBit)
EXTRN XDATA (nTxIndex)
EXTRN BIT (UartBusy)
EXTRN XDATA (TxByte)
PUBLIC Timer0_Overflow
; sfr TH0 = 0x8C;
; sfr TL0 = 0x8A;
; sbit TF0 = 0x8D;
; sbit ET0 = 0xA9;
; sbit P10 = 0x90;
; extern xdata unsigned char TxByte;/*要发送的字节数据*/
; extern unsigned char nTxIndex;/*发送单个字符的位指针*/
; extern bit nTxNextBit;/* 单个字符数据位*/
; extern bit UartBusy;
;
CSEG AT 0000BH
LJMP Timer0_Overflow
; void Timer0_Overflow() interrupt 1 using 0
RSEG ?PR?Timer0_Overflow?TIMER0_OVERFLOW
USING 0
Timer0_Overflow:
PUSH ACC ;2个机器周期
PUSH DPH ;2个机器周期
PUSH DPL ;2个机器周期
PUSH PSW ;2个机器周期
USING 0
MOV PSW,#00H ;2个机器周期
; SOURCE LINE # 11
; {
; {
; SOURCE LINE # 13
; P10=nTxNextBit;/* 产生数据位 */
; SOURCE LINE # 14
MOV C,nTxNextBit ;1个机器周期
MOV P10,C
; TH0=0xFF; /* 写入计数初值到TH0 */
; SOURCE LINE # 15
MOV TH0,#0FFH
; TL0=0x97; /* 写入计数初值到TL0 */
; SOURCE LINE # 16
MOV TL0,#0A5H
; nTxIndex++;
; SOURCE LINE # 17
MOV DPTR,#nTxIndex
MOVX A,@DPTR
INC A
MOVX @DPTR,A
; nTxNextBit=(TxByte>>nTxIndex)&0x01;
; SOURCE LINE # 18
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#TxByte
MOVX A,@DPTR
MOV R6,A
MOV R0,AR7
INC R0
SJMP ?C0005
?C0004:
CLR C
RRC A
?C0005:
DJNZ R0,?C0004
RRC A
MOV nTxNextBit,C
; //计算下一位
; }
; SOURCE LINE # 20
; if(nTxIndex==7)
; SOURCE LINE # 21
MOV A,R7
CJNE A,#07H,?C0001
; nTxNextBit=1;/* 下一位停止位 */
; SOURCE LINE # 22
SETB nTxNextBit
?C0001:
; /* 1T后溢出 */
; TF0=0; /* 定时器0中断标志位清0 */
; SOURCE LINE # 24
CLR TF0
; if(nTxIndex==8) //发送完毕
; SOURCE LINE # 25
MOV DPTR,#nTxIndex
MOVX A,@DPTR
CJNE A,#08H,?C0003
; {ET0=0; /*关闭定时器0中断*/
; SOURCE LINE # 26
CLR ET0
; UartBusy=0; /*Uart发送完毕*/
; SOURCE LINE # 27
CLR UartBusy
; nTxIndex=0; /* 发送下一个数据的D0位 */
; SOURCE LINE # 28
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 29
; } ; SOURCE LINE # 30
?C0003:
POP PSW
POP DPL
POP DPH
POP ACC
RETI
; END OF Timer0_Overflow
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -