当前位置:编程学习 > 汇编语言 >>

单片机的问题

ORG 0000H JMP START ORG 0003H JMP X0 ORG 000BH JMP TIM0 ORG 0100H START: MOV TMOD,#01H MOV TH0,#0FEH MOV TL0,#0CH SETB EA SETB ET0 MOV R1,#50 MOV R2,#20 JMP $ X0: SETB TR0 RETI TIM0: MOV TH0,#0FEH MOV TL0,#0CH CPL P2.0 DJNZ R1,LOOP1 MOV R1,#50 DJNZ R2,LOOP1 CLR TR0 MOV R2,#20 MOV R1,#50 LOOP1: RETI END 用这个程序产生500hz的方波 持续1s定时器就停止,为什么示波器没现象
其他:给你一个程序,可以产生方波和PWM
#include"reg52.h"
bit flag;  //pwm 标志
unsigned int count;
sbit P23=P2^3;
void InitTimer0()
{
    TMOD = 0x01;
    TH0 = (65536-1000)/256;
    TL0 = (65536-1000)%256;
    EA = 1;   
    ET0 = 1;
    TR0=1;
}
main()
{
InitTimer0();
while(1)
{
P23=flag;
}
}
void timer0() interrupt 1
{
    TH0 = (65536-1000)/256;
    TL0 = (65536-1000)%256;
 count++;
 if(count==1000)  count=1; 
 
 if(count<300)  flag=1;  //改变count 可以调整pwm占空比。count=500,就是方波
    else            flag=0;   
  } 程序没开外中断0,加上就可以了。

……

START:

    MOV TMOD,#01H

    MOV TH0,#0FEH

    MOV TL0,#0CH

    SETB EA

    SETB ET0

    setb ex0         ;允许外中断0

    setb it0           ;下降沿触发

    MOV R1,#50

    MOV R2,#20 

    JMP $ 

上一个:LUNA后台按键
下一个:51汇编 宏定义

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,