⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file4.asm

📁 单片机学习系统附的实验源代码
💻 ASM
字号:
;内部定时器程序 ,定时器T0工作在方式1 
;现象:LED1不断闪烁,
;由于我们的定时器中断以后,只是简单地给P1.0(LED1)翻转,我们看到的就是LED1闪烁
;扩展这个功能,我们能够做成精度很高的信号源,比如,输出一定频率的方波信号等。
 
       beep   bit  p3.7
                
        led1   bit  p1.0
        led2   bit  p1.1
        led3   bit  p1.2
        led4   bit  p1.3
        led5   bit  p1.4
        led6   bit  p1.5
        led7   bit  p1.6
        led8   bit  p1.7
        
	    int_data   equ  45h
	    count_data equ  44h
	    timer_data equ  43h

;以上为预定义部分
;以下程序代码开始

	org 00h      ;程序开始
	jmp main     ;引导跳转到主程序 
	
	org 0bh      ;中断服务程序入口     
	jmp tim0     ;跳转到服务程序
	
	org 030h     ;主程序代码开始地址

   main:
   	mov sp,#30h       ;    初始化SP
	mov a,#00h        ;    累加器初始化
	mov b,#00h
	mov p1,0ffh       ;    灭掉LED显示
    clr beep          ;    禁止蜂鸣器
    mov r0,#4         ;    定时器发生次数,每次250ms,4次 1秒
    lcall pro_timer   ;    开始调用定时器初始化程序
    jmp   $           ;    程序停止,等待中断
      
tim0:clr tr0          ;   定时中断服务程序,首先
                      ;   清除定时器运行标志
     mov th0,#91h     ;   重新设置定时常数
     mov tl0,#5fh     ;   为了提高定时精度,不能简单代入计算结果
                      ;   还需要减去中断服务程序执行以下代码的时间
     djnz r0,tend     ;   每次定时250ms,共计4次为1s
     mov r0,#4        ;   计数完成,重新设置定时
     cpl p1.0         ;   输出结果 
tend: setb tr0        ;   开始运行定时器
     reti             ;   中断服务结束,返回

pro_timer:                               ;   
	mov tmod,#91h     ;   设置定时器T1为方式1 
	mov th0,#58h      ;   根据计算确定 定时器初始值
	mov tl0,#0a1h     ;   x = 65536us -  t ;换算成十六进制
	setb ea           ;   总的中断允许
	setb et0          ;   允许定时T0中断
	setb tr0          ;   定时器开始运行
            
    ret               ;   子程序返回
   end             ;整个程序结束,以后的代码无效


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -