搜索
首页 电脑/网络 硬件

单片机C语言计数器程序

  #include#include#define uchar unsigned charuchar count=0;char dir=0;uchar code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xff};uchar dbuf[4]={0,0,0,0};void delay(){ uchar i; for(i=0;i<100;i++);}void chdir(void) interrupt 0{ dir=1; count++;}void chdir1(void) interrupt 2{ dir=1; count--; if(count<=0) count=0;}void disp(){ uchar bsel,n; bsel=0x01; for(n=0;n<4;n++) { P2=bsel; P0=segtab[dbuf[n]]; bsel=_crol_(bsel,1); delay(); P2=0x00; } }void hexbcd(uchar c){ dbuf[3]=c/100; dbuf[2]=c/100%10; dbuf[1]=c/10%10; dbuf[0]=c%10;}void main(){ EA=1;//开中断 EX0=1;//允许外部中断0中断 EX1=1;//允许外部中断1中断 IT0=1;//1 触发方式为负跳变 IT1=1;//2 while(1) { if(dir==1) hexbcd(count); disp(); }}单片机用C语言代码,中断计数器,void hexbcd(uchar c){ dbuf[3]=c/100; dbuf[2]=c/100%10; dbuf[1]=c/10%10; dbuf[0]=c%10; 这段把计数值转换为显示缓存BCD码的代码怎么理解?为什么第一个除100?应该除1000啊,除100时计到2255,除1000计到255,怎么回事。
  

全部回答

2013-04-06

141 0

这样写试过吗? dbuf[3]=c/1000; dbuf[2]=c%1000/100; dbuf[1]=c%100/10; dbuf[0]=c%10;

类似问题换一批

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
硬件
硬件
键盘/鼠标
主板
显卡
显示器
CPU
硬盘
内存
举报
举报原因(必选):
取消确定举报