?? uart.asm
字號:
//========================================================================================================//
// 程序名稱:uart.asm
// 功能描述:實現RS232通訊的UART初始化和UART的讀寫
// 日 期:2003/7/7
//========================================================================================================//
.include hardware.inc
.CODE
//========================================================================================================
//函數: F_UART_Initial
//語法:void F_UART_Initial()
//描述:初始化UART
//參數:無
//返回:無
//========================================================================================================
.PUBLIC _F_UART_Initial;
_F_UART_Initial:
//INT OFF;
//r1 = 0x0000; //未使能任何中斷
//[P_INT_Ctrl] = r1;
r1=[P_IOB_Attrib]
r1|=0x0480 //設置IOB7為輸入IOB10為輸出
[P_IOB_Attrib] = r1;
r1=[P_IOB_Dir]
r1|=0x0400;
r1&=0xFF7F;
[P_IOB_Dir] = R1;
r1= [P_IOB_Buffer]
r1&=0xFB7F;
[P_IOB_Buffer] = R1;
R1 = 0x006b; //設置波特率為115.2Kbps
[P_UART_BaudScalarLow] = R1;
R1 = 0x0000;
[P_UART_BaudScalarHigh] = R1;
R1 = 0x0000;
R4 = 0x00C0; //使能輸入和輸出
[P_UART_Command1] = R1;
[P_UART_Command2] = R4;
retf
//========================================================================================================
//函數: F_UART_Read
//語法:unsigned int F_UART_Read(void)
//描述:讀UART
//參數:無
//返回:r1,返回值低8bit為有效值
//========================================================================================================
.public _F_UART_ReadByte
_F_UART_ReadByte:
PUSH r2,r5 TO [sp];
r4=0x00FF;
r3=0xFFFF;
L_Check_RxRDY:
r3-=1;
JNZ L_TestUART;
r4-=1;
JZ L_UART_Read_Timeout;
L_TestUART:
r2 = [P_UART_Command2]; //檢測是否有數據接收
r2 &= 0x0080;
JZ L_Check_RxRDY;
r1 = [P_UART_Data]; //接收數據
POP r2,r5 FROM [sp]
retf;
L_UART_Read_Timeout:
r1=0xffff;
POP r2,r5 FROM [sp]
retf;
//========================================================================================================
//函數: F_UART_SendCommand
//語法:void F_UART_SendCommand(unsigned int)
//描述:寫UART
//參數:為要寫入串口的值,其低8bit為有效值。
//返回:無
//========================================================================================================
.PUBLIC _F_UART_SendCommand
_F_UART_SendCommand:
PUSH r1,r5 TO [sp]
bp=sp+1;
r1=[bp+7]; //命令值
L_Check_TxRDY:
R2 = [P_UART_Command2];
R2 &= 0x0040; //檢測輸出是否READY
JZ L_Check_TxRDY;
[P_UART_Data] = r1; //
POP r1,r5 FROM [SP]
RETF;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -