C语言程序:
#include <reg51.h> //包含特殊功能寄存器库 sbit P1_1=P1^1; char i; void main() {
TMOD=0x10;
TH1=0xD8;TL1=0xf0; EA=1;ET1=1; i=0; TR1=1; while(1); }
void time0_int(void) interrupt 3 //中断服务程序 {
TH1=0xD8;TL1=0xf0; i++;
if (i= =100) {P1_1=! P1_1;i=0;} }
20. 8051系统中,已知振荡频率为12MHz,用定时/计数器T1,实现从P1.1产生高电平宽度为10ms,低电平宽度为20ms的矩形波。要求分别用汇编语言和C语言进行编程。
解:本题处理方式有多种,这里采用对定时/计数器T1形成10ms周期定时,用R2对10ms计数,当计到1,则对P1.1置1,当计到2和3,则对P1.1置0来实现。用定时/计数器T1形成10ms周期定时见上题。
ORG 0000H LJMP MAIN
ORG 001BH LJMP INTT1
ORG 0100H
MAIN: MOV TMOD,#10H
MOV TH1,#0D8H MOV TL1,#0F0H MOV R2,#00H SETB EA SETB ET1 SETB TR1 SJMP $
INTT1: MOV TH1,#0D8H
MOV TL1,#0F0H INC R2
CJNE R2,#01H,NEXT SETB P1.1 SJMP EXIT
NEXT: CJNE R2,#02H,NEXT1
CLR P1.1 SJMP EXIT
NEXT1:CJNE R2,#03H,NEXT