X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
Microchip MCU
[求助] pic秒表的问题!!!!急求!!!
ageless
2009-12-23 15:24
楼主
#include
#define uchar unsigned char
#define uint unsigned long int
#define RS RB4
#define E RE2
#define UPKEY RB1
#define DOWNKEY RB2
#define CLRKEY RB5
uchar table[]=" 000:000:000 ";
uchar ys,count,TMR1_H,TMR1_L;
uint ms1=0,ms2=0,sec1=0,sec2=0,us=0;
void init_pic()
{
TRISB=0X00;
TRISD=0X00;
TRISE=0x00;
GIE=1;
PEIE=1;
TMR1IE=1;
TMR1IF=0;
//TMR1H=0Xfe;
//TMR1L=0X70; //0.1ms
//T1CON=0X01;
}
//**********延时函数*************/
void delay_a(uchar z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
/********************************************************************\
|* 函 数 名: write_command(uchar tempdata) *|
|* 功能描述: 将数据码写入LCD数据寄存器 *|
\********************************************************************/
void write_command(uchar tempdata)
{
RS=0; //RS=0/RW=0 时写指令;
for(ys=10;ys>0;ys--);//)
PORTD=tempdata;
for(ys=10;ys>0;ys--);//
E=1;
for(ys=10;ys>0;ys--);//
E=0;
}
/********************************************************************\
|* 函 数 名: void write_data(uchar tempdata) *|
|* 功能描述: 写LCD1602使能程序 *|
\********************************************************************/
void write_data(uchar tempdata)
{
RS=1; //RS=1/RW=0 时写数据;
for(ys=10;ys>0;ys--);//delay_a(5);
PORTD=tempdata;
for(ys=10;ys>0;ys--);//delay_a(5);
E=1;
for(ys=10;ys>0;ys--);//delay_a(5);
E=0;
}
void init_LCD(void)
{
write_command(0x38); // lcd为两行显示8位数据线有效
write_command(0x0c); // 显示字符 关闭光标
write_command(0x06); // 输入方式设置 光标向右移动一位 ac-1
write_command(0x01);
write_command(0x80);//第一行显示
}
void write_ms(uchar add,uchar date) //*定义ms显示位置*/
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_command(0x80+add);
write_data(0x30+shi);
write_data(0x30+ge);
}
void write_us(uchar add,uint data)//us
{ uchar a;
a=(data*100)/100;
write_command(0x80+add);
write_data(0x30+a);
}
void zifu_disp()
{
uchar i;
write_command(0x80);//第1行第1列:(0x00------0x0F)+0x80;
for(i=0;i<15;i++)
{
write_data(table
);
delay_a(5);
}
}
//*************主函数*******************/
void main()
{
init_pic();
init_LCD();
zifu_disp();
while(1)
{ if(UPKEY==1)
{ delay_a(5);
if(UPKEY==1)
{
TMR1_H=0xfe;
TMR1_L=0x70;
T1CON=0x01;
while(UPKEY==1);
}
}
if(DOWNKEY==0)
{ delay_a(5);
if(DOWNKEY==0)
{
TMR1ON=0;
while(DOWNKEY==0);
}
}
write_us(2, sec2);
write_ms(3,sec1);
write_us(6, ms2);
write_ms(7, ms1);
write_us(10,us);
}
}
//********中断服务子程序**************
void interrupt time(void)
{
TMR1H=TMR1_H;
TMR1L=TMR1_L;
TMR1IF=0;
us++;
if(us==9)
{
ms1++;
us=0;
if(ms1==100)
{ ms2++;
ms1=0;
if(ms2==10)
{ sec1++;
ms2=0;
if(sec1==100)
{ sec2++;
sec1=0;
}
}
}
}
}
我在进行调试时,发现按下UPKEY后可以计时,按下DOWNKEY健后计时停止。但是问题也出现了,之后按下那个键都没有反应了?我想做的是重新按下UPKEY键后重新在开始计时,请各位帮帮忙!
点赞
回复评论 (4)
沙发
afobbi
我这边有用PIC单片机实现秒表的详细设计与源代码,
qq:604914729,晚上7点把相关资料给你吧;到时QQ聊
点赞
2009-12-23 15:43
板凳
kof2ooo
你的按键硬件是怎么接的?有上拉电阻或下拉电阻么,没有的化处理完按键要恢复按键状态吧!
点赞
2009-12-24 11:02
4楼
yjk000
引用: 引用 1 楼 kyzf 的回复:
我这边有用PIC单片机实现秒表的详细设计与源代码,
qq:604914729,晚上7点把相关资料给你吧;到时QQ聊
全才啊!干这行的有你这么博学的还很少见啊!
点赞
2009-12-24 16:50
5楼
weiqh
顶啊!
点赞
2009-12-24 17:07
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
直流有刷电机和H桥驱动电路的设计问题
电子设计竞赛题目分析——信号源类题目分析
晶振前端为什么要加DAC?
散分,为灾区人民祈福
IAR 8303官网安装包无法安装
单片机延时计算,比如12M的晶振 最大的延时时间是2^16=65536 μs,这个16是哪里冒...
LC滤波电路元件参数怎样计算
今天都去干什么去了?
寻找广州单片机开发外包
这个是什么错误?有人知道么?
Modelsim入门
TM4C的LD1000例程编译失败
18650锂电池组的保养方法
Keil51仿真的问题
STM32F开发板 可以用来学习IAP 吗 ?
想使用负电压,LDO可以这么接吗?
DSPIC30F不仿真时读到的IO口电平一直是0
用CMPB比较时间出发会影响HRPWM的高精度周期吗?
请问 前段时间送100块板子的那个发货了吗?
RealViewMDK中国版开发工具“买一送一”活动现正举行!
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复