📄 hello.lst
字号:
673 1 P0=(ptr1<<4)|dispbuf[ptr1]; /*将扫描值左移至高4位元再加上资料码*/
674 1 } /*返回主程式*/
675 /********************************************************/
676 void rec_timer1_intr () interrupt 3 using 3 /*TIMER1中断副程式--秒计时器*/
677 {
678 1 TH1=(65536-59200)/256; //重设TIMER1计数值
679 1 TL1=(65536-59200)%256;
680 1 dispbuf[8]=0x09; //蜂鸣器设定开/二次分频
681 1 if(b1==0) //中断次数完成否,是则表1秒到了
682 1 {
683 2 b1=100; //重设中断次数
684 2 P3_6=1; //秒SEC加1
685 2 TR1=0;
686 2 dispbuf[8]=0x01; //蜂鸣器关
687 2 clear();
688 2 //send_to_Led_a(); //串行发送到DTLED-6副程式
689 2 //send_to_Comm1();//huzm
690 2 //LCD_disple();//huzm
691 2 }
692 1 TF1=0;
693 1 b1--; /*中断次数减1*/
694 1
695 1 } /*返回主程式*/
696 /********************************************************/
697
698 /******************************************************************/
699 /*
700 //串口接收中断函数
701 void serialRecCom() interrupt 4 using 3
702 {
703 if (RI)
704 {
705 unsigned char ch;
706 RI = 0 ;
707 ch=SBUF;
708 send_to_Comm1();
709 }
710 } */
711 /***********************************************************************/
712 /******************************************************/
713 void Rd1302() /*读时钟芯片DS1302*/
714 {
715 1 char i,j,ts0,conb;
716 1 conb=0x81;
717 1 clocktmp[0]=0;
718 1 clocktmp[1]=0;
719 1 clocktmp[2]=0;
720 1 ts0=conb;
721 1 for(j=0;j<3;j++)
722 1 {
723 2 clk=RST=0; /*DS1302系统初始化*/
724 2 nop;nop;
725 2 RST=1;
726 2 for(i=0;i<8;i++) /*写控制字到DS1302*/
727 2 {
728 3 clk=0; /*清时钟*/
729 3 if(conb&0x01)
730 3 DINOUT=1;
731 3 else DINOUT=0;
732 3 clk=1; /*时钟上升沿,发送数据有效*/
733 3 conb=conb>>1;
734 3 nop;
C51 COMPILER V7.07 HELLO 11/07/2006 19:17:04 PAGE 13
735 3 }
736 2 conb=ts0=ts0+2;
737 2 clk=0;
738 2 for(i=0;i<7;i++) /*读时钟芯片的时分秒单元*/
739 2 {
740 3 if(DINOUT==1)
741 3 clocktmp[j]=clocktmp[j]|0x80;
742 3 else clocktmp[j]=clocktmp[j]&0x7f;
743 3 clk=1;
744 3 clocktmp[j]=clocktmp[j]>>1; /*接收暂存单元*/
745 3 nop;
746 3 clk=0; /*时钟下降沿,接收数据有效*/
747 3 }
748 2 delay(5);
749 2 RST=0;
750 2 delay(10);
751 2 }
752 1 dispbuf[1]=clocktmp[0]&0x0f; //转换秒分时显示单元
753 1 dispbuf[2]=clocktmp[0]>>4&0x07;
754 1 dispbuf[3]=clocktmp[1]&0x0f;
755 1 dispbuf[4]=clocktmp[1]>>4&0x07;
756 1 dispbuf[5]=clocktmp[2]&0x0f;
757 1 dispbuf[6]=clocktmp[2]>>4&0x03;
758 1 nop;
759 1 } /*返回主程式*/
760
761 void Rec_com1_intr () interrupt 4 using 1 //串行口中断副程式
762 {
763 1 uchar v,i=0;
764 1 while(RI!=1); /*接收完成否*/
765 1 {
766 2 RI=0;
767 2 v=SBUF; /*接收的数据存入C*/
768 2 //buf_rec_com1=SBUF;//huzm
769 2
770 2 #if 1
771 2 if(v==0xa0) /*是否是识别码"A0"*/
772 2 {while(RI!=1); /*接收完成否*/
773 3 bufuart[i]=v;
774 3 for(i=1;i<7;i++)
775 3 {while(RI!=1); /*接收完成否*/
776 4 bufuart[i]=SBUF; /*接收的数据存入C*/
777 4 RI=0; /*清除接收完成标志位RI*/
778 4 }
779 3 }
780 2 else delay(10);
781 2 #endif
782 2 //delay(10);//huzm
783 2 //send_to_Comm1();
784 2 RI=0;
785 2
786 2 }
787 1 send_to_Led_a();//huzm
788 1 /*
789 1 dispbuf[0]=bufuart[6];
790 1 dispbuf[1]=bufuart[5];
791 1 dispbuf[2]=bufuart[4];
792 1 dispbuf[3]=bufuart[3];
793 1 dispbuf[4]=bufuart[2];
794 1 dispbuf[5]=bufuart[1];
795 1 */
796 1 } /*返回主程式*/
C51 COMPILER V7.07 HELLO 11/07/2006 19:17:04 PAGE 14
797
798 //**************************************************************
799 void send_to_Comm1(void) /*宣告串口serial发送副程式*/
800 {
801 1 //uchar i=0;//huzm
802 1 //
803 1 uchar sec,min,hour;
804 1 sec=((dispbuf[2]<<4)&0xf0)|(dispbuf[1]&0x0f);
805 1 min=((dispbuf[4]<<4)&0xf0)|(dispbuf[3]&0x0f);
806 1 hour=((dispbuf[6]<<4)&0xf0)|(dispbuf[5]&0x0f);
807 1 //
808 1 IE=0x8f;
809 1 SBUF=hour; //根据扫描指标到TAB中取ASCII码由SBUF发送出去
810 1 //for( i=0; i<rec_comm1_len; i++)//huzm
811 1 {
812 2 //SBUF=buf_rec_com1;//huzm
813 2 while(TI!=1); /*发送完成否?*/
814 2 TI=0; /*是,则清除发送完成旗标TI=0*/
815 2 delay(20);
816 2 }
817 1
818 1 #if 1
819 1 SBUF=min; /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
820 1 //SBUF=dispbuf_huzm[0];
821 1 //SBUF=dispbuf[0];
822 1 //dispbuf[0]++;
823 1 while(TI!=1); /*发送完成否?*/
824 1 TI=0; /*是,则清除发送完成旗标TI=0*/
825 1 delay(20);
826 1 SBUF=sec; /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
827 1 while(TI!=1); /*发送完成否?*/
828 1 TI=0; /*是,则清除发送完成旗标TI=0*/
829 1 delay(20);
830 1 #endif
831 1
832 1 IE=0x9f;
833 1 }
834
835 main() /*主程式*/
836 {
837 1 /*
838 1 TMOD=0x11;
839 1 TH1=256-(28800/9600);
840 1 TH0=(65536-3000)/256;
841 1 TL0=(65536-3000)%256;
842 1 TR0=0;
843 1 T2CON=0x38;
844 1 TL2=0xfd;
845 1 TH2=0xff;
846 1 RCAP2L=0xdc;
847 1 RCAP2H=0xff;
848 1 TH2=256-(28800/9600);
849 1 TR2=1;
850 1 SCON=0x50;
851 1 IE=0;
852 1 IP=0x10;
853 1 read24c02();
854 1 P1=0xff;
855 1 */
856 1 while(1)
857 1 {
858 2 #if 0
C51 COMPILER V7.07 HELLO 11/07/2006 19:17:04 PAGE 15
//scan(); //呼叫键盘扫描副程式有按FLAG0会为1
/*
if(FLAG0==1)
{
temp(); //判断有按键输入否?
}
else
*/
{
//FLAG4=FLAG5=0;
//if(FLAG2==1)
{
Rd1302(); /*读时钟芯片DS1302*/
if(dispbuf[1]!=clockbak) /*秒加一*/
{
clockbak=dispbuf[1];
send_to_Led_a(); /*串行发送到DTLED-6副程式*/
send_to_Comm1(); //宣告串口serial发送副程式
}
}
}
#endif
881 2 //Rec_com1_intr();//huzm
882 2 //send_to_Comm1();
883 2 }
884 1 }
885
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1777 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 81 17
IDATA SIZE = ---- ----
BIT SIZE = 7 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -