这两个芯片的相关寄存器是一致的
不过一个STC89是12T另外一个STC8C是1T。
STC8C2K32S2 定时器0和串口0的设置
- #include "reg51.h"
- #include "intrins.h"
-
- sfr T2L = 0xd7;
- sfr T2H = 0xd6;
- sfr AUXR = 0x8e;
-
- sfr P0M1 = 0x93;
- sfr P0M0 = 0x94;
- sfr P1M1 = 0x91;
- sfr P1M0 = 0x92;
- sfr P2M1 = 0x95;
- sfr P2M0 = 0x96;
- sfr P3M1 = 0xb1;
- sfr P3M0 = 0xb2;
- sfr P4M1 = 0xb3;
- sfr P4M0 = 0xb4;
- sfr P5M1 = 0xc9;
- sfr P5M0 = 0xca;
-
- sfr P_SW1 = 0xa2;
-
- sbit P10 = P1^0;
- sbit P11 = P1^1;
- sbit P12 = P1^2;
-
- void UART1_Isr() interrupt 4
- {
- if (TI)
- {
- TI = 0; //清中断标志
- P10 = !P10; //测试端口
- }
- if (RI)
- {
- RI = 0; //清中断标志
- P11 = !P11; //测试端口
- }
- }
-
- void TM0_Isr() interrupt 1 //1毫秒@11.0592MHz
- {
- P12 = !P12; //测试端口
- }
-
- void main()
- {
- P0M0 = 0x00; //设置P0.0~P0.7为双向口模式
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
-
- //串口1切换
- P_SW1 = 0x00; //RXD/P3.0, TXD/P3.1
- // P_SW1 = 0x40; //RXD_2/P3.6, TXD_2/P3.7
- // P_SW1 = 0x80; //RXD_3/P1.6, TXD_3/P1.7
- // P_SW1 = 0xc0; //RXD_4/P4.3, TXD_4/P4.4
-
-
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式 //定时器0 模式0
- TL0 = 0x66; //65536-11.0592M/12/1000
- TH0 = 0xfc; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //启动定时器 定时器0开始计时
- ET0 = 1; //使能定时器中断
-
-
- SCON = 0x50; //8位数据,可变波特率
- AUXR |= 0x01; //串口1选择定时器2为波特率发生器
- AUXR |= 0x04; //定时器时钟1T模式
- T2L = 0xe8; //65536-11059200/115200/4=0FFE8H
- T2H = 0xff; //设置定时初始值 //115200bps@11.0592MHz
- AUXR |= 0x10; //定时器2开始计时 //启动定时器
- ES = 1; //使能串口中断
- EA = 1;
- SBUF = 0x5a; //发送测试数据
-
- while (1);
- }
-
复制代码
|