📄 new.lst
字号:
753 2 Disp_Digit(1,8,two);
754 2 Disp_Digit(1,16,zero);
755 2 Disp_Digit(1,24,zero+d*16);
756 2 Disp_Digit(1,32,zero+e*16);
757 2 }
758 1
759 1 if(mon==1) //月闪烁标志位
C51 COMPILER V8.05a NEW 11/16/2007 20:45:07 PAGE 14
760 1 {
761 2 if(flag==1)
762 2 {
763 3 d=read_clock(0x89);//读月
764 3 e=d;
765 3 d=d>>4;
766 3 e=e&0x0f;
767 3 Mcs=1;Scs=0;
768 3 Disp_Digit(1,56,zero+d*16);
769 3 Mcs=0;Scs=1;
770 3 Disp_Digit(1,0,zero+e*16);
771 3 Disp_Chinese(1,8,yue);
772 3 }
773 2 else
774 2 {
775 3 Mcs=1;Scs=0;
776 3 Disp_Digit(1,56,space); //显示空格
777 3 Mcs=0;Scs=1;
778 3 Disp_Digit(1,0,space);
779 3 }
780 2 }
781 1 else
782 1 {
783 2 d=read_clock(0x89);//读月
784 2 e=d;
785 2 d=d>>4;
786 2 e=e&0x0f;
787 2 Mcs=1;Scs=0;
788 2 Disp_Digit(1,56,zero+d*16);
789 2 Mcs=0;Scs=1;
790 2 Disp_Digit(1,0,zero+e*16);
791 2 Disp_Chinese(1,8,yue);
792 2 }
793 1
794 1 if(day==1) //日闪烁标志位
795 1 {
796 2 if(flag==1)
797 2 {
798 3 d=read_clock(0x87);//读日
799 3 e=d;
800 3 d=d>>4;
801 3 e=e&0x0f;
802 3 Mcs=0;Scs=1;
803 3 Disp_Digit(1,24,zero+d*16);
804 3 Disp_Digit(1,32,zero+e*16);
805 3 Disp_Chinese(1,40,ri);
806 3 }
807 2 else
808 2 {
809 3 Mcs=0;Scs=1;
810 3 Disp_Digit(1,24,space); //显示空格
811 3 Disp_Digit(1,32,space);
812 3 }
813 2 }
814 1 else
815 1 {
816 2 d=read_clock(0x87);//读日
817 2 e=d;
818 2 d=d>>4;
819 2 e=e&0x0f;
820 2 Mcs=0;Scs=1;
821 2 Disp_Digit(1,24,zero+d*16);
C51 COMPILER V8.05a NEW 11/16/2007 20:45:07 PAGE 15
822 2 Disp_Digit(1,32,zero+e*16);
823 2 Disp_Chinese(1,40,ri);
824 2 }
825 1
826 1 if(weekk==1) //星期闪烁标志位
827 1 {
828 2 if(flag==1)
829 2 {
830 3 d=read_clock(0x8b);//读星期
831 3 Mcs=1;Scs=0;
832 3 Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
833 3 }
834 2 else
835 2 {
836 3 Mcs=1;Scs=0;
837 3 Disp_Chinese(3,40,spaces); //显示空格
838 3 }
839 2 }
840 1 else
841 1 {
842 2 d=read_clock(0x8b);//读星期
843 2 Mcs=1;Scs=0;
844 2 Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
845 2 }
846 1 }
847
848 /******************************************************************************/
849 void Disp2(void)//显示和闪烁函数
850 {
851 1 if(Kgb==1) //开关闪烁标志位
852 1 {
853 2 if(flag==1)
854 2 {
855 3 if(Bell_Swh == 0)//0为关
856 3 {
857 4 Mcs=0;Scs=1;
858 4 Disp_Chinese(2,32,guan);//显示关
859 4 }
860 3 else
861 3 {
862 4 Mcs=0;Scs=1;
863 4 Disp_Chinese(2,32,kai);//显示开
864 4 }
865 3 }
866 2 else
867 2 {
868 3 Mcs=0;Scs=1;
869 3 Disp_Chinese(2,32,spaces); //显示空格
870 3 }
871 2 }
872 1 else
873 1 {
874 2 if(Bell_Swh == 0)//关
875 2 {
876 3 Mcs=0;Scs=1;
877 3 Disp_Chinese(2,32,guan);
878 3 }
879 2 else
880 2 {
881 3 Mcs=0;Scs=1;
882 3 Disp_Chinese(2,32,kai);
883 3 }
C51 COMPILER V8.05a NEW 11/16/2007 20:45:07 PAGE 16
884 2 }
885 1
886 1 if(Hourb==1) //时闪烁标志位
887 1 {
888 2 if(flag==1)
889 2 {
890 3 d = Read_One_Byte(0x01);//读取2408的小时的数值
891 3 Mcs=1;Scs=0;
892 3 Disp_Digit(4,48,zero+(d/10)*16);
893 3 Disp_Digit(4,56,zero+(d%10)*16);
894 3 }
895 2 else
896 2 {
897 3 Mcs=1;Scs=0;
898 3 Disp_Digit(4,48,space); //显示空格
899 3 Disp_Digit(4,56,space);
900 3 }
901 2 }
902 1 else
903 1 {
904 2 d = Read_One_Byte(0x01);//读取24的小时的数值
905 2 Mcs=1;Scs=0;
906 2 Disp_Digit(4,48,zero+(d/10)*16);
907 2 Disp_Digit(4,56,zero+(d%10)*16);
908 2 }
909 1
910 1 if(Minb==1) //分钟闪烁标志位
911 1 {
912 2 if(flag==1)
913 2 {
914 3 d = Read_One_Byte(0x02);//读取24的分的数值
915 3 Mcs=0;Scs=1;
916 3 Disp_Digit(4,8,zero+(d/10)*16);
917 3 Disp_Digit(4,16,zero+(d%10)*16);
918 3 }
919 2 else
920 2 {
921 3 Mcs=0;Scs=1;
922 3 Disp_Digit(4,8,space); //显示空格
923 3 Disp_Digit(4,16,space);
924 3 }
925 2 }
926 1 else
927 1 {
928 2 d = Read_One_Byte(0x02);//读取24的分的数值
929 2 Mcs=0;Scs=1;
930 2 Disp_Digit(4,8,zero+(d/10)*16);
931 2 Disp_Digit(4,16,zero+(d%10)*16);
932 2 }
933 1
934 1 if(Secb==1) //秒闪烁标志位
935 1 {
936 2 if(flag==1)
937 2 {
938 3 d = Read_One_Byte(0x03);//读取24的秒的数值
939 3 Mcs=0;Scs=1;
940 3 Disp_Digit(4,32,zero+(d/10)*16);
941 3 Disp_Digit(4,40,zero+(d%10)*16);
942 3 }
943 2 else
944 2 {
945 3 Mcs=0;Scs=1;
C51 COMPILER V8.05a NEW 11/16/2007 20:45:07 PAGE 17
946 3 Disp_Digit(4,32,space); //显示空格
947 3 Disp_Digit(4,40,space);
948 3 }
949 2 }
950 1 else
951 1 {
952 2 d = Read_One_Byte(0x03);//读取24的秒的数值
953 2 Mcs=0;Scs=1;
954 2 Disp_Digit(4,32,zero+(d/10)*16);
955 2 Disp_Digit(4,40,zero+(d%10)*16);
956 2 }
957 1 }
958
959 /******************************************************************************/
960 void id_case1_key(void)//id为1时的下一级选择
961 {
962 1 if(Add_Key == 0) //增加
963 1 {
964 2 Delay(100);
965 2 if(Add_Key == 0)
966 2 Set_time(id,0); //调用Set_time函数
967 2 while(Add_Key ==0);
968 2 }
969 1 if (Dec_Key==0) //减少
970 1 {
971 2 Delay(100);
972 2 if(Dec_Key == 0)
973 2 Set_time(id,1);
974 2 while(Dec_Key ==0);
975 2 }
976 1 }
977
978 /******************************************************************************/
979 void Set_time(unsigned char sel, bit sel_1) //根据选择调整相应项目并写入DS1302
980 {
981 1 signed char address,item;
982 1 signed char max,mini;
983 1 if(sel==7) {address=0x80; max=0;mini=0;} //秒
984 1 if(sel==6) {address=0x82; max=59;mini=0;} //分钟
985 1 if(sel==5) {address=0x84; max=23;mini=0;} //小时
986 1 if(sel==3) {address=0x86; max=31;mini=1;} //日
987 1 if(sel==2) {address=0x88; max=12;mini=1;} //月
988 1 if(sel==1) {address=0x8c; max=99; mini=0;} //年
989 1 if(sel==4) {address=0x8a; max=7;mini=1;} //星期
990 1
991 1 //读取1302某地址上的数值转换成10进制赋给item
992 1 item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
993 1 if(sel_1==0)
994 1 item++;
995 1 else
996 1 item--;
997 1 if(item>max) item=mini;
998 1 if(item<mini) item=max;
999 1
1000 1 write_clock(0x8e,0x00);//允许写操作
1001 1 write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
1002 1 write_clock(0x8e,0x80);//写保护,禁止写操作
1003 1 }
1004
1005 /******************************************************************************/
1006 void id_case2_key(void)//id为1时的下一级选择
1007 {
C51 COMPILER V8.05a NEW 11/16/2007 20:45:07 PAGE 18
1008 1 if(Add_Key == 0) //增加
1009 1 {
1010 2 Delay(100);
1011 2 if(Add_Key == 0)
1012 2 Set_Bell(id2,0); //调用Set_time函数
1013 2 while(Add_Key ==0);
1014 2 }
1015 1 if (Dec_Key==0) //减少
1016 1 {
1017 2 Delay(100);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -