📄 delay_dcmoter.lst
字号:
C51 COMPILER V6.12 DELAY_DCMOTER 11/06/2008 08:54:19 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DELAY_DCMOTER
OBJECT MODULE PLACED IN .\DELAY_DCMOTER.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\DELAY_DCMOTER.c DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************/
2 /*
3 /* 深圳信息职业技术学院电子通信系
4 /*
5 /* 《单片机程序设计实践教程》项目例程
6 /*
7 /* 第10章 基础项目. '继电器和直流小电机正反转控制'演示程序
-
8 /*
9 /* 功能:利用按键控制直流电机的正转、刹车、停转和反转以及继电器输出端的断开和连接,并用LED发光管
10 /* 和7段数码管显示相应的状态。
11 /* 演示过程:正确连接直流电机和继电器输出端,将程序下载执行后,按压相应按键即可看到演示效果 */
12 /* 存在问题:无;
13 /* 邮箱: panxn@sziit.com.cn */
14 /* 作者:潘晓宁 */
15 /* */
16 /* 修改时间: 2008/8/3 */
17 /* */
18 /*【版权】Copyright(C)PanXiaoNing All Rights Reserved */
19 /*【声明】此程序仅用于学习与参考
20 /* */
21 /*******************************************************************/
22
23 #include <absacc.h>
24 #include <intrins.h>
25 #include "I2C.h"
26 #include "ZLG7290.h"
27
28 #define uchar unsigned char
29 #define uint unsigned int
30
31 #define PA8255 XBYTE[0x3ffc] //8255端口A的地址
32 #define PB8255 XBYTE[0x3ffd] //8255端口B的地址
33 #define PC8255 XBYTE[0x3ffe] //8255端口C的地址
34 #define COM8255 XBYTE[0x3fff] //8255命令字的地址
35
36 sbit cs138=P1^6 ; //74HC138的选通端口
37
38 void DispHexValue(char x, unsigned char dat);
39 void MotorRelayRun(void);
40 void delay(uchar);
41
42 uchar KeyValue,KeyPushFlag;
43
44 /*********************************主函数***************************************/
45 void main(void)
46 { cs138=0; //选通74HC138的使能端
47 1 COM8255=0x80; //8255的初始化,PA,PC口为输出
48 1
49 1 PC8255=0; //初始化直流电机停转,继电器断开
50 1 EA=1; //允许所有中断被响应
51 1 IT1 = 1; //外部中断1的触发方式为下降沿触发
52 1 EX1 = 1; //允许外部中断1被响应(ZLG7290键盘中断)
53 1
54 1 KeyPushFlag=0; //按键标志位置零,表示无键被按下
C51 COMPILER V6.12 DELAY_DCMOTER 11/06/2008 08:54:19 PAGE 2
55 1 KeyValue=3; //初始化向数码管第1位写入'03',表示直流电机停转
56 1 PA8255=0x0f; //82C55的PA口D17、D16、D15和D14点亮
57 1 DispHexValue(4, 0x08); //初始化向数码管第4位写入'08',表示继电器断开
58 1
59 1 while(1)
60 1 {
61 2 if(KeyValue<=4) DispHexValue(0, KeyValue); //以16进制方式显示直流电机运行数值
62 2 else DispHexValue(4, KeyValue); //以16进制方式显示继电器运行数值
63 2 if (KeyPushFlag) //如果有键按下
64 2 {
65 3 KeyPushFlag= 0; //KeyPushFlag置0,可以等待ZLG7290键盘中断的再次发生
66 3 ZLG7290_ReadReg(ZLG7290_Key,&KeyValue); //由ZLG7290键值寄存器读取被压键值,此函数由项目中的ZLG7290.c规
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -