|
- /*uart.c*/
- #define uc unsigned char
- #define ui unsigned int
- #define ul unsigned long
- #define iuc idata unsigned char
- #define iui idata unsigned int
- #define iul idata unsigned long
- #define bt bit
- #define swch switch
- #define cs case
- #define whl while
- #define rtn return
- #define brk break
- #define itrpt interrupt
- uart_init(bt xos)
- {
- if(xos==1)
- {
- P_SW2|=0x80; /*啟動(dòng)內(nèi)部擴(kuò)展區(qū)寄存器訪問(wèn)功能*/
- XOSCCR|=0xc0; /*啟動(dòng)外部晶振*/
- while(!(XOSCCR & 1)); /*待晶振頻率穩(wěn)定*/
- CLKDIV=0x00; /*晶振不分頻*/
- CKSEL=0x01; /*選用外部晶振*/
- }
- SCON=0x50; /*設(shè)定串口工作方式*/
- TMOD|=0x21; /*設(shè)置T0T1寄存器*/
- AUXR=0xfc; /*配置輔助寄存器*/
- TL1=TH1=0xdc; /*設(shè)置波特率為9.6kbit/s*/
- TR1=1;
- REN=1; /*允許接收串口數(shù)據(jù)*/
- EA=1; /*打開(kāi)總中斷*/
- ES=1; /*打開(kāi)串口中斷*/
- P3M1=0x01; /*00000001*/
- P3M0=0x02; /*00000010,將串口接收口設(shè)為高阻輸入模式,發(fā)送口設(shè)置為強(qiáng)推挽模式*/
- }
- uart_txd(uc buf[])
- {
- iui i;
- iui j=sizeof(buf);
- TI=RI=0;
- for(i=0;i<j;i++)
- {
- SBUF=buf[i];
- while(TI==0)
- {
- ;
- }
- TI=0;
- }
- }
- /*—————————————兩個(gè)文件的分割線—————————————*/
- /*main.c*/
- #include <STC8x.H>
- #include <UART.H>
- iui txdbuf[13]={'H','E','L','L','O',' ','W','O','R','L','D','!','\0'};
- main()
- {
- uart_init(0);
- while(1)
- {
- uart_txd(txdbuf);
- }
- }
復(fù)制代碼 |
|