2016-01-25 11:40:37 baidu_33836580 阅读数 1318
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18609 人正在学习 去看看 朱有鹏

以中断方法设计单片机秒、分脉冲发生器。
假定P1.0每秒产生一个机器周期的正脉冲,P1.1每分钟产生一个机器周期的正脉冲。
单片机是89C51。
悬赏分:50 - 解决时间:2010-6-21 18:03
;======================================================
;最佳答案:
;用定时器T0,工作模式1,进行50ms定时,中断。
;中断20次,即为1秒,60秒,即为1分钟。
;到了这些时刻,分别在P1.0、P1.1输出正脉冲即可。

       ORG    0000H
       AJMP   START
       ORG    000BH              ;定时器0中断入口.
       AJMP   SERVE
START:
       MOV TMOD, #01H           ;T0定时方式0
       MOV TH0, #3CH            ;定时
       MOV TL0, #0B0H
       SETB TR0                  ;启动.
       SETB ET0                  ;允许中断.
       SETB EA
       MOV R2, #20             ;秒.
       MOV R3, #60             ;分.
       CLR P1.0                 ;开始时,输出低电平.
       CLR P1.1

       SJMP $                   ;等待中断.
;--------------------------------------------
SERVE:                           ;50ms执行一次本中断程序.
       MOV TL0, #0B0H           ;重新送入初始值.
       MOV TH0, #3CH            ;定时
       DJNZ R2, T0_END          ;不到20次转移.
       SETB P1.0                 ;到了20次,就是到了1秒,输出正脉冲.
       CLR P1.0                 ;马上就恢复为0,这就是1个机器周期.
       MOV R2, #20
       DJNZ R3, T0_END          ;不到60秒转移.
       SETB P1.1                 ;到了60秒,输出正脉冲.
       CLR P1.1                 ;马上就恢复为0,这就是1个机器周期.
       MOV R3, #60
T0_END:
       RETI
;--------------------------------------------
END
;======================================================
;提问者对于答案的评价:谢了
;原题网址:http://zhidao.baidu.com/question/161166099.html

2015-03-15 20:11:21 harriszhuang 阅读数 867
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18609 人正在学习 去看看 朱有鹏
; HSYNC_GEN 标准行同步信号发生器
; 作者:泉州广播电视台 庄智慧
;
; 时钟频率:27.000MHz,STC-Y3指令集
; 适用于STC12C系列单片机

HSYN EQU P1.0
VBNK EQU P1.1	;场脉冲测试口

ORG 0000H
ACALL MAIN

ORG 0100H
MAIN:           ; 主程序循环
FIELD_EVEN:     ; 偶数场开始

			MOV R0,#005		;2 CLK          ;行消隐前肩 1.3us 2 CLK
			DJNZ R0,$		;4 CLK x 5      ;后肩在子程序中
			NOP				;1 CLK          ;分立的前肩便于调整时序
			NOP
			NOP
			MOV R1,#200     ; 为Loop M4设置初值
			MOV R2,#87      ; 为Loop M5设置初值
			MOV R3,#17      ; 为Loop M3设置初值

			CLR VBNK
			ACALL GEN_H_EQU					;场消隐期/开始,共25行
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_TOOTH					;场同步及齿脉冲
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_H_EQU					;场同步结束/后均衡
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_HALF_MUTE           ;半个扫描行

	LOOPM3:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL

			MOV R0,#007		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			SETB VBNK
			DJNZ R3, LOOPM3                 ;场消隐结束


	LOOPM4:	ACALL GEN_H_SYNC                ;有效行开始
			ACALL GEN_H_FULL				;行正程
			NOP
			MOV R0,#007		;2 CLK			;行消隐前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			NOP
			NOP
			NOP
			DJNZ R1, LOOPM4

	LOOPM5:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL

			MOV R0,#007		;2 CLK			;行消隐前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			NOP
			NOP
			NOP
			NOP
			DJNZ R2, LOOPM5

			ACALL GEN_H_SYNC
			ACALL GEN_H_HVALID              ;偶场结束于半个有效行

FIELD_ODD:      ; 奇数场开始

			MOV R0,#005		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			NOP
			MOV R1,#200     ; 为Loop M0设置初值
			MOV R2,#87      ; 为Loop M1设置初值
			MOV R3,#17      ; 为Loop M2设置初值

			CLR VBNK
			ACALL GEN_H_EQU					;场消隐期/开始
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_TOOTH					;场同步及齿脉冲
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_H_EQU					;场同步结束/后均衡
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU

	LOOPM2:	ACALL GEN_H_SYNC                ;奇场直接从行首开始扫描
			ACALL GEN_H_FULL                

			MOV R0,#007		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			SETB VBNK
			DJNZ R3, LOOPM2                 ;场消隐结束


	LOOPM0:	ACALL GEN_H_SYNC                ;有效行开始
			ACALL GEN_H_FULL				;行正程
			NOP
			MOV R0,#007		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			NOP
			NOP
			NOP
			DJNZ R1, LOOPM0

	LOOPM1:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL

			MOV R0,#007		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			NOP				;1 CLK
			NOP
			NOP
			NOP
			NOP
			NOP
			DJNZ R2, LOOPM1

			ACALL GEN_H_SYNC
			ACALL GEN_H_FULL_L              ;奇场结束
			AJMP MAIN		;6/4 CLK        ;跳转前做时序补偿

GEN_TOOTH:					;生成齿脉冲 27.3us
			CLR HSYN
			MOV R0,#182
			DJNZ R0,$
			NOP
			NOP
			NOP
			SETB HSYN
			MOV R0,#27		;生成槽脉冲 4.7us
			DJNZ R0,$
			NOP
			NOP
			NOP
			RET

GEN_H_HALF_MUTE:			;生成与行均衡等宽的静默行
			SETB HSYN		;1 CLK			;行均衡:?CLK 2.35us
			MOV R0,#14		;2 CLK
			DJNZ R0,$		;4 CLK x 15
			NOP
			SETB HSYN		;1 CLK

			;H-BLANK TOTAL: 162 CLK 6us
			MOV R0,#196		;2 CLK
			DJNZ R0,$		;4 CLK x 40
			NOP
			RET

GEN_H_EQU:					;生成行均衡
			CLR HSYN		;1 CLK			;行均衡:?CLK 2.35us
			MOV R0,#14		;2 CLK
			DJNZ R0,$		;4 CLK x 15
			NOP
			SETB HSYN		;1 CLK

			;H-BLANK TOTAL: 162 CLK 6us
			MOV R0,#196		;2 CLK
			DJNZ R0,$		;4 CLK x 40
			NOP
			RET

GEN_H_SYNC: 				;生成行同步
			CLR HSYN
			MOV R0,#29		;2 CLK
			DJNZ R0,$		;4 CLK x 29
			NOP				;1 CLK
			NOP	   			;1 CLK
			NOP				;1 CLK
			NOP				;1 CLK
			NOP				;1 CLK
			SETB HSYN		;1 CLK
			MOV R0,#36		;2 CLK			;后肩: 162 CLK 6us
			DJNZ R0,$		;4 CLK x 40
			RET

GEN_H_HVALID:				;生成半行内容
			MOV R0,#132		;2 CLK			;半行: 540 CLK 20us
			DJNZ R0,$		;4 CLK x 255
			NOP
			NOP
			RET

GEN_H_FULL:					;生成全行内容
			MOV R0,#200		;2 CLK			;全行: 1404 CLK 52us
			DJNZ R0,$		;4 CLK x 255
			MOV R0,#146		;2 CLK
			DJNZ R0,$	 	;4 CLK x 93
			NOP
			NOP
			NOP
			RET

GEN_H_FULL_L:           	;生成全行内容并提供时序调整空间
			MOV R0,#200		;2 CLK			;全行: 1404 CLK 52us
			DJNZ R0,$		;4 CLK x 255
			MOV R0,#147		;2 CLK
			DJNZ R0,$	 	;4 CLK x 93
			NOP
			RET

END
; HSYNC_GEN 标准行同步信号发生器
; 作者:泉州广播电视台 庄智慧
;
; 时钟频率:27.000MHz,STC-Y3指令集
; 适用于STC12C系列单片机

P1M1 EQU 0x91
P1M0 EQU 0x92

P3M1 EQU 0xB1
P3M0 EQU 0xB2

HSYN EQU P1.0
HBNK EQU P3.7
VBNK EQU P3.1	;场脉冲测试口

ORG 0000H
MOV P1M1,#0FFH
MOV P1M0,#0FFH
MOV P3M0,#0FFH
SETB HSYN
SETB HBNK
ACALL MAIN

ORG 0100H
MAIN:           ; 主程序循环
FIELD_EVEN:     ; 偶数场开始

			MOV R0,#001		;2 CLK          ;行消隐前肩 1.3us 2 CLK
			DJNZ R0,$		;4 CLK x 5      ;后肩在子程序中
			CLR HBNK
			CLR HBNK
			CLR HBNK
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP				;1 CLK          ;分立的前肩便于调整时序
			MOV R1,#200     ; 为Loop M4设置初值
			MOV R2,#87      ; 为Loop M5设置初值
			MOV R3,#17      ; 为Loop M3设置初值



											SETB VBNK
			ACALL GEN_H_EQU					;场消隐期/开始,共25行
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_TOOTH					;场同步及齿脉冲
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_H_EQU					;场同步结束/后均衡
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_HALF_MUTE           ;半个扫描行

	LOOPM3:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL_BNK
			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#003
			DJNZ R0,$
			CLR VBNK
			DJNZ R3, LOOPM3

	LOOPM4:	ACALL GEN_H_SYNC                ;有效行开始
			ACALL GEN_H_FULL				;行正程
			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#004
			DJNZ R0,$
			DJNZ R1, LOOPM4

	LOOPM5:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL

			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#004
			DJNZ R0,$
			DJNZ R2, LOOPM5

			ACALL GEN_H_SYNC
			ACALL GEN_H_HVALID              ;偶场结束于半个有效行

FIELD_ODD:      ; 奇数场开始

			MOV R0,#001		;2 CLK          ;行消隐前肩 1.3us 2 CLK
			DJNZ R0,$		;4 CLK x 5      ;后肩在子程序中
			CLR HBNK
			CLR HBNK
			CLR HBNK
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP				;1 CLK          ;分立的前肩便于调整时序
			MOV R1,#200     ; 为Loop M4设置初值
			MOV R2,#87      ; 为Loop M5设置初值
			MOV R3,#17      ; 为Loop M3设置初值

			SETB VBNK
			ACALL GEN_H_EQU					;场消隐期/开始
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_TOOTH					;场同步及齿脉冲
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_TOOTH
			ACALL GEN_H_EQU					;场同步结束/后均衡
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU
			ACALL GEN_H_EQU

	LOOPM2:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL_BNK
			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#003
			DJNZ R0,$
			CLR VBNK
			DJNZ R3, LOOPM2

			;ACALL GEN_H_HALF_MUTE
			;ACALL GEN_H_HVALID

	LOOPM0:	ACALL GEN_H_SYNC                ;有效行开始
			ACALL GEN_H_FULL				;行正程
			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#004
			DJNZ R0,$
			DJNZ R1, LOOPM0

	LOOPM1:	ACALL GEN_H_SYNC
			ACALL GEN_H_FULL

			MOV R0,#003		;2 CLK			;前肩: 35 CLK 1.3us
			DJNZ R0,$		;4 CLK x 7
			CLR HBNK
			NOP
			NOP
			NOP
			MOV R0,#004
			DJNZ R0,$
			DJNZ R2, LOOPM1

			ACALL GEN_H_SYNC
			ACALL GEN_H_FULL_L              ;奇场结束
			AJMP MAIN		;6/4 CLK        ;跳转前做时序补偿

GEN_TOOTH:					;生成齿脉冲 27.3us
			CLR HSYN
			MOV R0,#182
			DJNZ R0,$
			NOP
			NOP
			NOP
			SETB HSYN
			MOV R0,#27		;生成槽脉冲 4.7us
			DJNZ R0,$
			NOP
			NOP
			NOP
			RET

GEN_H_HALF_MUTE:			;生成与行均衡等宽的静默行
			SETB HSYN		;1 CLK			;行均衡:?CLK 2.35us
			NOP
			NOP
			NOP
			NOP
			;SETB HBNK
			MOV R0,#14		;2 CLK
			DJNZ R0,$		;4 CLK x 15
			NOP

			;H-BLANK TOTAL: 162 CLK 6us
			MOV R0,#196		;2 CLK
			DJNZ R0,$		;4 CLK x 40
			NOP
			RET

GEN_H_EQU:					;生成行均衡
			CLR HSYN		;1 CLK			;行均衡:?CLK 2.35us
			MOV R0,#14		;2 CLK
			DJNZ R0,$		;4 CLK x 15
			NOP
			SETB HSYN		;1 CLK

			;H-BLANK TOTAL: 162 CLK 6us
			MOV R0,#196		;2 CLK
			DJNZ R0,$		;4 CLK x 40
			NOP
			RET

GEN_H_SYNC: 				;生成行同步
			CLR HSYN
			MOV R0,#29		;2 CLK
			DJNZ R0,$		;4 CLK x 29
			NOP				;1 CLK
			NOP	   			;1 CLK
			NOP				;1 CLK
			NOP				;1 CLK
			NOP				;1 CLK
			SETB HSYN		;1 CLK
			MOV R0,#36		;2 CLK			;后肩: 162 CLK 6us
			DJNZ R0,$		;4 CLK x 40
			RET

GEN_H_HVALID:				;生成半行内容
			NOP
			NOP
			SETB HBNK
			MOV R0,#130		;2 CLK			;半行: 540 CLK 20us
			DJNZ R0,$		;4 CLK x 255
			NOP
			NOP
			NOP
			NOP
			RET

GEN_H_FULL_BNK:					;生成全行内容
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			MOV R0,#198		;2 CLK			;全行: 1404 CLK 52us
			DJNZ R0,$		;4 CLK x 255
			MOV R0,#146		;2 CLK
			DJNZ R0,$	 	;4 CLK x 93
			NOP
			NOP
			RET


GEN_H_FULL:					;生成全行内容
			NOP
			NOP
			SETB HBNK
			MOV R0,#198		;2 CLK			;全行: 1404 CLK 52us
			DJNZ R0,$		;4 CLK x 255
			MOV R0,#146		;2 CLK
			DJNZ R0,$	 	;4 CLK x 93
			NOP
			NOP
			RET

GEN_H_FULL_L:           	;生成全行内容并提供时序调整空间
			MOV R0,#200		;2 CLK			;全行: 1404 CLK 52us
			DJNZ R0,$		;4 CLK x 255
			MOV R0,#147		;2 CLK
			DJNZ R0,$	 	;4 CLK x 93
			NOP
			RET

END
2019-05-11 14:39:12 u012577474 阅读数 135
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18609 人正在学习 去看看 朱有鹏

功能说明:

1、24路IO控制。
2、8路脉冲控制, 脉冲个数,宽度可调,控制精度0.1ms。 

上位机界面:
基于labview设计的上位机VI模块,可以在实际开发中直接调用本VI模块对控制器进行控制。
在这里插入图片描述
Pulser程序:
Pulser主控vi模块,维持与下位机的通信。(上位机命令的发送,及接收单片机反馈)
在这里插入图片描述

下位机控制器说明:
使用Microchip家的PIC18F66K80单片机设计的控制器。

程序目录结构如下:
在这里插入图片描述
上下位机通信协议设计:

在这里插入图片描述
项目源码下载(GitHub)

需要上下位机源程序的请关注公众号,并联系博主索取!

扫码下方二维码关注本人公众号分享编程相关知识,共同进步吧。

工众号回复【我要资源免费获取,获取更多学习资源及视频教程 (Linux\Python\Java\PHP\Labview和大数据等视频资料)。

联系邮箱:898109004@qq.com

在这里插入图片描述

微 信 号:yang10242019


2020-03-08 22:20:53 qq_40860792 阅读数 13
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18609 人正在学习 去看看 朱有鹏

这是一个双稳态触发电路,输入是两个有相位差的脉冲,输出也是一个脉冲信号。在输出端能检测到正常的脉冲信号,我想把这个信号送入51单片机处理,但是51单片机接收不到我的信号。然后我看了一下我这个电路的输出接上负载之后不能产生电流,不知道是什么原因,特来请教一下各位大佬!谢谢!

输出是有交流电压的
但是没有电流
输出结果
所以我现在就是想把这个脉冲信号送给51单片机处理,但是送给单片机之后单片机完全没有工作。而且我将信号发生器发生的脉冲送给单片机处理时,单片机是可以反馈正确的结果的,说明应该不是单片机的程序的问题。所以我想是不是我的电路哪里的参数设置的有问题,还是一些其他的问题。希望大佬们能够指正,万分感谢!

没有更多推荐了,返回首页