keil51输出正弦波
时间: 2023-12-10 11:56:42 浏览: 154
正弦波51程序
在Keil C51编译器中输出正弦波可以通过以下步骤实现:
1. 定义一个包含正弦波数据的数组。
```
unsigned char sine[] = {128,140,152,163,175,186,196,207,217,226,235,243,250,255,
255,250,243,235,226,217,207,196,186,175,163,152,140,128,115,103,91,80,68,57,47,
36,26,17,8,1,0,0,1,8,17,26,36,47,57,68,80,91,103,115};
```
2. 初始化计数器和定时器,设置定时器工作模式为“自动重装模式”。
```
void InitTimer0() {
TMOD &= 0xF0;
TMOD |= 0x01; // Timer0 work in mode 1, 16-bit timer
TH0 = 0xFC; // Initial value
TL0 = 0x67; // Initial value
ET0 = 1; // Enable Timer0 interrupt
TR0 = 1; // Start Timer0
}
```
3. 在定时器中断服务程序中输出正弦波数据。
```
void Timer0_ISR() interrupt 1 {
static unsigned char index = 0;
P2 = sine[index++];
if (index >= sizeof(sine)) {
index = 0;
}
}
```
4. 在main函数中启用中断并无限循环。
```
void main() {
EA = 1; // Enable global interrupt
InitTimer0();
while(1);
}
```
这样,每次定时器中断发生时,就会从正弦波数组中输出一个数据到P2口上,形成一个正弦波。注意修改P2口为正确的输出口。
阅读全文